content: {-# OPTIONS_GHC -Wno-redundant-constraints -Wno-simplifiable-class-constraints #-}
  {-# OPTIONS_GHC -O2 #-}
  {-# LANGUAGE RankNTypes, GADTs, FlexibleContexts #-}
  
  -- This one make SpecConstr generate bogus code (hence -O2),
  -- with a lint error, in GHC 6.4.1
  -- C.f. https://gitlab.haskell.org/ghc/ghc/issues/737
  
  module ShouldCompile where
  
   data IHandler st where
       IHandler :: forall st ev res.
                   Serialize (TxContext ev) => String -> IO ev
                   -> (res -> IO ()) -> Ev st ev res -> IHandler st
       -- Weird test case: (Serialize (TxContext ev)) is simplifiable
  
   data Ev st ev res  = Ev
   data TxContext evt = TxContext
   data TxConfig      = TxConfig
   data M    a        = M a
  
   class Serialize a where
   instance Serialize a => Serialize (TxContext a)
   instance Serialize Int
   instance Serialize ()
  
   data IHR st = forall res ev. Serialize (TxContext ev) => IHR (TxContext ev)
  
  
   runHandler :: M (IHR st) ->  IHandler st -> IO ()
   runHandler queue ih@(IHandler tstring inp out run) = runHandler queue ih
  
  