docs: def _delete_version(self, symbol, version_num, do_cleanup=True):
          """
          Delete the n'th version of this symbol from the historical collection.
          """
          version = self._versions.find_one({'symbol': symbol, 'version': version_num})
          if not version:
              logger.error("Can't delete %s:%s as not found in DB" % (symbol, version_num))
              return
          # If the version is pointed to by a snapshot, then can't delete
          if version.get('parent', None):
              for parent in version['parent']:
                  snap_name = self._snapshots.find_one({'_id': parent})
                  if snap_name:
                      snap_name = snap_name['name']
                  logger.error("Can't delete: %s:%s as pointed to by snapshot: %s" % (symbol, version['version'],
                                                                                      snap_name))
                  return
          self._versions.delete_one({'_id': version['_id']})
          # TODO: for FW pointers, if the above statement fails, they we have no way to delete the orphaned segments.
          #       This would be possible only via FSCK, or by moving the above statement at the end of this method,
          #       but with the risk of failing to delelte the version catastrophically, and ending up with a corrupted v.
          if do_cleanup:
              cleanup(self._arctic_lib, symbol, [version['_id']], self._versions,
                      shas_to_delete=tuple(bson.binary.Binary(s) for s in version.get(FW_POINTERS_REFS_KEY, [])),
                      pointers_cfgs=(get_fwptr_config(version), ))