reallySnapshot :: Worker -> IO Worker
reallySnapshot w =
    do w' <- takeSnapshot w
       case w' of
         Nothing -> error "cannot take a snapshot"
         Just w'' -> return w''
reallySnapshot :: Worker -> IO Worker
reallySnapshot w =
    do w' <- takeSnapshot w
       case w' of
         Nothing -> error "cannot take a snapshot"
         Just w'' -> return w''
reallySnapshot w =
    do w' <- takeSnapshot w
       case w' of
         Nothing -> error "cannot take a snapshot"
         Just w'' -> return w''