docs: def restore_version(self, symbol, as_of, prune_previous_version=True):
          """
          Restore the specified 'symbol' data and metadata to the state of a given version/snapshot/date.
          Returns a VersionedItem object only with a metadata element.
          Fast operation: Zero data/segment read/write operations.
  
          Parameters
          ----------
          symbol : `str`
              symbol name for the item
          as_of : `str` or `int` or `datetime.datetime`
              Return the data as it was as_of the point in time.
              `int` : specific version number
              `str` : snapshot name which contains the version
              `datetime.datetime` : the version of the data that existed as_of the requested point in time
          prune_previous_version : `bool`
              Removes previous (non-snapshotted) versions from the database.
              Default: True
  
          Returns
          -------
          `VersionedItem`
              VersionedItem named tuple containing the metadata of the written symbol's version document in the store.
          """
          # TODO: This operation is tricky as it may create history branches and lead to corrupted symbols.
          #       To avoid this we do concat_rewrite (see Issue #579)
          #       Investigate how this can be optimized and maintain safety (i.e. avoid read/write with serialization
          #       and compression costs, but instead:
          #       clone segments (server-side?) / crate new (base) version / update segments' parent).
  
          version_to_restore = self._read_metadata(symbol, as_of=as_of)
  
          # At this point it is guaranteed that the as_of version exists and doesn't have the symbol marked as deleted.
          # If we try to restore the last version, do nothing (No-Op) and return the associated VesionedItem.
          if self._last_version_seqnum(symbol) == version_to_restore['version']:
              return VersionedItem(symbol=symbol, library=self._arctic_lib.get_name(),
                                   version=version_to_restore['version'],
                                   host=self._arctic_lib.arctic.mongo_host,
                                   metadata=version_to_restore.pop('metadata', None), data=None)
  
          # Read the existing data from as_of
          item = self.read(symbol, as_of=as_of)
  
          # Write back, creating a new base version
          new_item = self.write(symbol,
                                data=item.data, metadata=item.metadata, prune_previous_version=prune_previous_version)
          return new_item