Hi,

I'm getting stuck on implementing `MonadBaseControl IO` for my application context type. What I have so far (in a minimized example) is

```
data Env = Env {envBalance :: !(TVar Int)}

newtype AppM a = AppM { unAppM :: ReaderT Env IO a }
  deriving (Functor, Applicative, Monad, MonadIO, MonadReader Env)

instance MonadBase IO AppM where
  liftBase = liftIO

instance MonadBaseControl IO AppM where
  type StM AppM a = a
  liftBaseWith f = undefined
  restoreM = return
```

I'm so utterly stuck on the definition of `liftBaseWith`... but I'm not 100% sure on the other bits either, though it "feels right".

Any tips on how I should go about it?

/M