withStack f = getState >>= return . (`withStack'` f)
              where rec `withStack'` f = f (iStack rec)
withStack f = getState >>= return . (`withStack'` f)
              where rec `withStack'` f = f (iStack rec)
withStack f = getState >>= return . (`withStack'` f)
              where rec `withStack'` f = f (iStack rec)