mkCheck' :: MkInferTypeConstraint e w s r m ki ty a ITOffline
        => Proxy (MonadProxy e w s r m)
        -> (Term ki ty pt tm a -> UnifyT ki ty a m (Type ki ty a))
        -> ([UConstraint (TyAst ki ty) (TyAstVar a)] -> m (M.Map (TyAstVar a) (TyAst ki ty (TyAstVar a))))
        -> Term ki ty pt tm a
        -> Type ki ty a
        -> m ()
mkCheck' m inferFn unifyFn x y = do
  cs <- execWriterT $ (mkCheckType m (Proxy :: Proxy ITOffline) inferFn) x y
  _ <- unifyFn cs
  return ()
mkCheck' :: MkInferTypeConstraint e w s r m ki ty a ITOffline
        => Proxy (MonadProxy e w s r m)
        -> (Term ki ty pt tm a -> UnifyT ki ty a m (Type ki ty a))
        -> ([UConstraint (TyAst ki ty) (TyAstVar a)] -> m (M.Map (TyAstVar a) (TyAst ki ty (TyAstVar a))))
        -> Term ki ty pt tm a
        -> Type ki ty a
        -> m ()
mkCheck' m inferFn unifyFn x y = do
  cs <- execWriterT $ (mkCheckType m (Proxy :: Proxy ITOffline) inferFn) x y
  _ <- unifyFn cs
  return ()
mkCheck' m inferFn unifyFn x y = do
  cs <- execWriterT $ (mkCheckType m (Proxy :: Proxy ITOffline) inferFn) x y
  _ <- unifyFn cs
  return ()