    {-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}
    #if __GLASGOW_HASKELL__ >= 702
    {-# LANGUAGE Trustworthy #-}
    #endif
    #if __GLASGOW_HASKELL__ >= 708
    {-# LANGUAGE ExplicitNamespaces #-}
    #endif
    module Data.Type.Equality.Compat (
      -- * The equality types
      (:~:)(..),
    #if __GLASGOW_HASKELL__ >= 800
      type (~~),
    #endif
    #if __GLASGOW_HASKELL__ >= 800
      (:~~:)(..),
    #endif

      -- * Working with equality
      sym, trans, castWith, gcastWith,
    #if __GLASGOW_HASKELL__ >= 706
        apply,
    #endif
        inner,
    #if __GLASGOW_HASKELL__ >= 706
        outer,
    #endif

      -- * Inferring equality from other types
      TestEquality(..),

    #if __GLASGOW_HASKELL__ >= 708
      -- * Boolean type-level equality
      type (==),
    #endif
    ) where

    #if MIN_VERSION_base(4,7,0)
    import "base" Data.Type.Equality
    #else
    import "type-equality" Data.Type.Equality
    #endif

    #if MIN_VERSION_base(4,9,0) && !MIN_VERSION_base(4,10,0)
    import "type-equality" Data.Type.Equality.Hetero
    #endif