docs: def _prune_previous_versions(self, symbol, keep_mins=120, keep_version=None, new_version_shas=None):
          """
          Prune versions, not pointed at by snapshots which are at least keep_mins old. Prune will never
          remove all versions.
          """
          new_version_shas = new_version_shas if new_version_shas else []
          prunable_ids_to_shas = self._find_prunable_version_ids(symbol, keep_mins)
          prunable_ids = list(prunable_ids_to_shas.keys())
          if keep_version is not None:
              try:
                  prunable_ids.remove(keep_version)
              except ValueError:
                  pass
          if not prunable_ids:
              return
  
          base_version_ids = self._find_base_version_ids(symbol, prunable_ids)
          version_ids = list(set(prunable_ids) - set(base_version_ids))
          if not version_ids:
              return
  
          # Delete the version documents
          mongo_retry(self._versions.delete_many)({'_id': {'$in': version_ids}})
  
          prunable_ids_to_shas = {k: prunable_ids_to_shas[k] for k in version_ids}
  
          # The new version has not been written yet, so make sure that any SHAs pointed by it are preserved
          shas_to_delete = [sha for v in prunable_ids_to_shas.values() for sha in v[0] if sha not in new_version_shas]
  
          # Cleanup any chunks
          mongo_retry(cleanup)(self._arctic_lib, symbol, version_ids, self._versions,
                               shas_to_delete=shas_to_delete,
                               pointers_cfgs=[v[1] for v in prunable_ids_to_shas.values()])