getWorker' :: Bool -> History -> IO Worker
getWorker' pure (HistoryRoot w) =
    do w' <- readIORef $ hw_worker w
       w'' <- case w' of
                Nothing -> error "root HW lost its worker"
                Just w''' -> return w'''
       if pure
        then return w''
        else reallySnapshot w''
getWorker' :: Bool -> History -> IO Worker
getWorker' pure (HistoryRoot w) =
    do w' <- readIORef $ hw_worker w
       w'' <- case w' of
                Nothing -> error "root HW lost its worker"
                Just w''' -> return w'''
       if pure
        then return w''
        else reallySnapshot w''
getWorker' pure (HistoryRoot w) =
    do w' <- readIORef $ hw_worker w
       w'' <- case w' of
                Nothing -> error "root HW lost its worker"
                Just w''' -> return w'''
       if pure
        then return w''
        else reallySnapshot w''