code: def _persist_metadata(self):
          
          serializable_data = self.get_serializable()
          try:
              self._try_persist_metadata(serializable_data)
          except TypeError:
              # The user added non-serializable data to the store, so skip all non-serializable keys or values.
              cleaned_data = Script._remove_non_serializable_store_entries(serializable_data["store"])
              self._try_persist_metadata(cleaned_data)
docs: Write all script meta-data, including the persistent script Store.
          The Store instance might contain arbitrary user data, like function objects, OpenCL contexts, or whatever other
          non-serializable objects, both as keys or values.
          Try to serialize the data, and if it fails, fall back to checking the store and removing all non-serializable
          data.