    {-# LANGUAGE DeriveDataTypeable #-}
    {-# LANGUAGE DeriveGeneric      #-}
    {-# LANGUAGE DeriveLift         #-}

    {-|
    Module:      TextShow.Options
    Copyright:   (C) 2014-2017 Ryan Scott
    License:     BSD-style (see the file LICENSE)
    Maintainer:  Ryan Scott
    Stability:   Provisional
    Portability: GHC

    'Options' and related datatypes.

    /Since: 3.4/
    -}
    module TextShow.Options (Options(..), GenTextMethods(..), defaultOptions) where

    import Data.Data (Data)
    import Data.Ix (Ix)

    import GHC.Generics (Generic)

    import Language.Haskell.TH.Syntax (Lift)

    -- | Options that specify how to derive 'TextShow' instances using Template Haskell.
    --
    -- /Since: 3.4/
    data Options = Options
      { Options -> GenTextMethods
    genTextMethods :: GenTextMethods
        -- ^ When Template Haskell should generate definitions for methods which
        --   return @Text@?
        --
        --   /Since: 3.4/
      , Options -> Bool
    emptyCaseBehavior :: Bool
        -- ^ If 'True', derived instances for empty data types (i.e., ones with
        --   no data constructors) will use the @EmptyCase@ language extension.
        --   If 'False', derived instances will simply use 'seq' instead.
        --
        --   /Since: 3.7/
      } deriving ( Typeable Options
    Typeable Options =>
    (forall (c :: * -> *).
     (forall d b. Data d => c (d -> b) -> d -> c b)
     -> (forall g. g -> c g) -> Options -> c Options)
    -> (forall (c :: * -> *).
        (forall b r. Data b => c (b -> r) -> c r)
        -> (forall r. r -> c r) -> Constr -> c Options)
    -> (Options -> Constr)
    -> (Options -> DataType)
    -> (forall (t :: * -> *) (c :: * -> *).
        Typeable t =>
        (forall d. Data d => c (t d)) -> Maybe (c Options))
    -> (forall (t :: * -> * -> *) (c :: * -> *).
        Typeable t =>
        (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Options))
    -> ((forall b. Data b => b -> b) -> Options -> Options)
    -> (forall r r'.
        (r -> r' -> r)
        -> r -> (forall d. Data d => d -> r') -> Options -> r)
    -> (forall r r'.
        (r' -> r -> r)
        -> r -> (forall d. Data d => d -> r') -> Options -> r)
    -> (forall u. (forall d. Data d => d -> u) -> Options -> [u])
    -> (forall u. Int -> (forall d. Data d => d -> u) -> Options -> u)
    -> (forall (m :: * -> *).
        Monad m =>
        (forall d. Data d => d -> m d) -> Options -> m Options)
    -> (forall (m :: * -> *).
        MonadPlus m =>
        (forall d. Data d => d -> m d) -> Options -> m Options)
    -> (forall (m :: * -> *).
        MonadPlus m =>
        (forall d. Data d => d -> m d) -> Options -> m Options)
    -> Data Options
    Options -> Constr
    Options -> DataType
    (forall b. Data b => b -> b) -> Options -> Options
    forall a.
    Typeable a =>
    (forall (c :: * -> *).
     (forall d b. Data d => c (d -> b) -> d -> c b)
     -> (forall g. g -> c g) -> a -> c a)
    -> (forall (c :: * -> *).
        (forall b r. Data b => c (b -> r) -> c r)
        -> (forall r. r -> c r) -> Constr -> c a)
    -> (a -> Constr)
    -> (a -> DataType)
    -> (forall (t :: * -> *) (c :: * -> *).
        Typeable t =>
        (forall d. Data d => c (t d)) -> Maybe (c a))
    -> (forall (t :: * -> * -> *) (c :: * -> *).
        Typeable t =>
        (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
    -> ((forall b. Data b => b -> b) -> a -> a)
    -> (forall r r'.
        (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
    -> (forall r r'.
        (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
    -> (forall u. (forall d. Data d => d -> u) -> a -> [u])
    -> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
    -> (forall (m :: * -> *).
        Monad m =>
        (forall d. Data d => d -> m d) -> a -> m a)
    -> (forall (m :: * -> *).
        MonadPlus m =>
        (forall d. Data d => d -> m d) -> a -> m a)
    -> (forall (m :: * -> *).
        MonadPlus m =>
        (forall d. Data d => d -> m d) -> a -> m a)
    -> Data a
    forall u. Int -> (forall d. Data d => d -> u) -> Options -> u
    forall u. (forall d. Data d => d -> u) -> Options -> [u]
    forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> Options -> r
    forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> Options -> r
    forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> Options -> m Options
    forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Options -> m Options
    forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c Options
    forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> Options -> c Options
    forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c Options)
    forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Options)
    $cgfoldl :: forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> Options -> c Options
    gfoldl :: forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> Options -> c Options
    $cgunfold :: forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c Options
    gunfold :: forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c Options
    $ctoConstr :: Options -> Constr
    toConstr :: Options -> Constr
    $cdataTypeOf :: Options -> DataType
    dataTypeOf :: Options -> DataType
    $cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c Options)
    dataCast1 :: forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c Options)
    $cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Options)
    dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Options)
    $cgmapT :: (forall b. Data b => b -> b) -> Options -> Options
    gmapT :: (forall b. Data b => b -> b) -> Options -> Options
    $cgmapQl :: forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> Options -> r
    gmapQl :: forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> Options -> r
    $cgmapQr :: forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> Options -> r
    gmapQr :: forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> Options -> r
    $cgmapQ :: forall u. (forall d. Data d => d -> u) -> Options -> [u]
    gmapQ :: forall u. (forall d. Data d => d -> u) -> Options -> [u]
    $cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Options -> u
    gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> Options -> u
    $cgmapM :: forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> Options -> m Options
    gmapM :: forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> Options -> m Options
    $cgmapMp :: forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Options -> m Options
    gmapMp :: forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Options -> m Options
    $cgmapMo :: forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Options -> m Options
    gmapMo :: forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> Options -> m Options
    Data
                 , Options -> Options -> Bool
    (Options -> Options -> Bool)
    -> (Options -> Options -> Bool) -> Eq Options
    forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
    $c== :: Options -> Options -> Bool
    == :: Options -> Options -> Bool
    $c/= :: Options -> Options -> Bool
    /= :: Options -> Options -> Bool
    Eq
                 , (forall x. Options -> Rep Options x)
    -> (forall x. Rep Options x -> Options) -> Generic Options
    forall x. Rep Options x -> Options
    forall x. Options -> Rep Options x
    forall a.
    (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
    $cfrom :: forall x. Options -> Rep Options x
    from :: forall x. Options -> Rep Options x
    $cto :: forall x. Rep Options x -> Options
    to :: forall x. Rep Options x -> Options
    Generic
                 , Eq Options
    Eq Options =>
    (Options -> Options -> Ordering)
    -> (Options -> Options -> Bool)
    -> (Options -> Options -> Bool)
    -> (Options -> Options -> Bool)
    -> (Options -> Options -> Bool)
    -> (Options -> Options -> Options)
    -> (Options -> Options -> Options)
    -> Ord Options
    Options -> Options -> Bool
    Options -> Options -> Ordering
    Options -> Options -> Options
    forall a.
    Eq a =>
    (a -> a -> Ordering)
    -> (a -> a -> Bool)
    -> (a -> a -> Bool)
    -> (a -> a -> Bool)
    -> (a -> a -> Bool)
    -> (a -> a -> a)
    -> (a -> a -> a)
    -> Ord a
    $ccompare :: Options -> Options -> Ordering
    compare :: Options -> Options -> Ordering
    $c< :: Options -> Options -> Bool
    < :: Options -> Options -> Bool
    $c<= :: Options -> Options -> Bool
    <= :: Options -> Options -> Bool
    $c> :: Options -> Options -> Bool
    > :: Options -> Options -> Bool
    $c>= :: Options -> Options -> Bool
    >= :: Options -> Options -> Bool
    $cmax :: Options -> Options -> Options
    max :: Options -> Options -> Options
    $cmin :: Options -> Options -> Options
    min :: Options -> Options -> Options
    Ord
                 , ReadPrec [Options]
    ReadPrec Options
    Int -> ReadS Options
    ReadS [Options]
    (Int -> ReadS Options)
    -> ReadS [Options]
    -> ReadPrec Options
    -> ReadPrec [Options]
    -> Read Options
    forall a.
    (Int -> ReadS a)
    -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
    $creadsPrec :: Int -> ReadS Options
    readsPrec :: Int -> ReadS Options
    $creadList :: ReadS [Options]
    readList :: ReadS [Options]
    $creadPrec :: ReadPrec Options
    readPrec :: ReadPrec Options
    $creadListPrec :: ReadPrec [Options]
    readListPrec :: ReadPrec [Options]
    Read
                 , Int -> Options -> ShowS
    [Options] -> ShowS
    Options -> String
    (Int -> Options -> ShowS)
    -> (Options -> String) -> ([Options] -> ShowS) -> Show Options
    forall a.
    (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
    $cshowsPrec :: Int -> Options -> ShowS
    showsPrec :: Int -> Options -> ShowS
    $cshow :: Options -> String
    show :: Options -> String
    $cshowList :: [Options] -> ShowS
    showList :: [Options] -> ShowS
    Show
                 , (forall (m :: * -> *). Quote m => Options -> m Exp)
    -> (forall (m :: * -> *). Quote m => Options -> Code m Options)
    -> Lift Options
    forall t.
    (forall (m :: * -> *). Quote m => t -> m Exp)
    -> (forall (m :: * -> *). Quote m => t -> Code m t) -> Lift t
    forall (m :: * -> *). Quote m => Options -> m Exp
    forall (m :: * -> *). Quote m => Options -> Code m Options
    $clift :: forall (m :: * -> *). Quote m => Options -> m Exp
    lift :: forall (m :: * -> *). Quote m => Options -> m Exp
    $cliftTyped :: forall (m :: * -> *). Quote m => Options -> Code m Options
    liftTyped :: forall (m :: * -> *). Quote m => Options -> Code m Options
    Lift
                 )

    -- | When should Template Haskell generate implementations for the methods of
    -- 'TextShow' which return @Text@?
    --
    -- /Since: 3.4/
    data GenTextMethods
      = AlwaysTextMethods    -- ^ Always generate them.
      | SometimesTextMethods -- ^ Only generate when @text-show@ feels it's appropriate.
      | NeverTextMethods     -- ^ Never generate them under any circumstances.
      deriving ( GenTextMethods
    GenTextMethods -> GenTextMethods -> Bounded GenTextMethods
    forall a. a -> a -> Bounded a
    $cminBound :: GenTextMethods
    minBound :: GenTextMethods
    $cmaxBound :: GenTextMethods
    maxBound :: GenTextMethods
    Bounded
               , Typeable GenTextMethods
    Typeable GenTextMethods =>
    (forall (c :: * -> *).
     (forall d b. Data d => c (d -> b) -> d -> c b)
     -> (forall g. g -> c g) -> GenTextMethods -> c GenTextMethods)
    -> (forall (c :: * -> *).
        (forall b r. Data b => c (b -> r) -> c r)
        -> (forall r. r -> c r) -> Constr -> c GenTextMethods)
    -> (GenTextMethods -> Constr)
    -> (GenTextMethods -> DataType)
    -> (forall (t :: * -> *) (c :: * -> *).
        Typeable t =>
        (forall d. Data d => c (t d)) -> Maybe (c GenTextMethods))
    -> (forall (t :: * -> * -> *) (c :: * -> *).
        Typeable t =>
        (forall d e. (Data d, Data e) => c (t d e))
        -> Maybe (c GenTextMethods))
    -> ((forall b. Data b => b -> b)
        -> GenTextMethods -> GenTextMethods)
    -> (forall r r'.
        (r -> r' -> r)
        -> r -> (forall d. Data d => d -> r') -> GenTextMethods -> r)
    -> (forall r r'.
        (r' -> r -> r)
        -> r -> (forall d. Data d => d -> r') -> GenTextMethods -> r)
    -> (forall u.
        (forall d. Data d => d -> u) -> GenTextMethods -> [u])
    -> (forall u.
        Int -> (forall d. Data d => d -> u) -> GenTextMethods -> u)
    -> (forall (m :: * -> *).
        Monad m =>
        (forall d. Data d => d -> m d)
        -> GenTextMethods -> m GenTextMethods)
    -> (forall (m :: * -> *).
        MonadPlus m =>
        (forall d. Data d => d -> m d)
        -> GenTextMethods -> m GenTextMethods)
    -> (forall (m :: * -> *).
        MonadPlus m =>
        (forall d. Data d => d -> m d)
        -> GenTextMethods -> m GenTextMethods)
    -> Data GenTextMethods
    GenTextMethods -> Constr
    GenTextMethods -> DataType
    (forall b. Data b => b -> b) -> GenTextMethods -> GenTextMethods
    forall a.
    Typeable a =>
    (forall (c :: * -> *).
     (forall d b. Data d => c (d -> b) -> d -> c b)
     -> (forall g. g -> c g) -> a -> c a)
    -> (forall (c :: * -> *).
        (forall b r. Data b => c (b -> r) -> c r)
        -> (forall r. r -> c r) -> Constr -> c a)
    -> (a -> Constr)
    -> (a -> DataType)
    -> (forall (t :: * -> *) (c :: * -> *).
        Typeable t =>
        (forall d. Data d => c (t d)) -> Maybe (c a))
    -> (forall (t :: * -> * -> *) (c :: * -> *).
        Typeable t =>
        (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
    -> ((forall b. Data b => b -> b) -> a -> a)
    -> (forall r r'.
        (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
    -> (forall r r'.
        (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
    -> (forall u. (forall d. Data d => d -> u) -> a -> [u])
    -> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
    -> (forall (m :: * -> *).
        Monad m =>
        (forall d. Data d => d -> m d) -> a -> m a)
    -> (forall (m :: * -> *).
        MonadPlus m =>
        (forall d. Data d => d -> m d) -> a -> m a)
    -> (forall (m :: * -> *).
        MonadPlus m =>
        (forall d. Data d => d -> m d) -> a -> m a)
    -> Data a
    forall u.
    Int -> (forall d. Data d => d -> u) -> GenTextMethods -> u
    forall u. (forall d. Data d => d -> u) -> GenTextMethods -> [u]
    forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> GenTextMethods -> r
    forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> GenTextMethods -> r
    forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d)
    -> GenTextMethods -> m GenTextMethods
    forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> GenTextMethods -> m GenTextMethods
    forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c GenTextMethods
    forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> GenTextMethods -> c GenTextMethods
    forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c GenTextMethods)
    forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c GenTextMethods)
    $cgfoldl :: forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> GenTextMethods -> c GenTextMethods
    gfoldl :: forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> GenTextMethods -> c GenTextMethods
    $cgunfold :: forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c GenTextMethods
    gunfold :: forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c GenTextMethods
    $ctoConstr :: GenTextMethods -> Constr
    toConstr :: GenTextMethods -> Constr
    $cdataTypeOf :: GenTextMethods -> DataType
    dataTypeOf :: GenTextMethods -> DataType
    $cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c GenTextMethods)
    dataCast1 :: forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c GenTextMethods)
    $cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c GenTextMethods)
    dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c GenTextMethods)
    $cgmapT :: (forall b. Data b => b -> b) -> GenTextMethods -> GenTextMethods
    gmapT :: (forall b. Data b => b -> b) -> GenTextMethods -> GenTextMethods
    $cgmapQl :: forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> GenTextMethods -> r
    gmapQl :: forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> GenTextMethods -> r
    $cgmapQr :: forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> GenTextMethods -> r
    gmapQr :: forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> GenTextMethods -> r
    $cgmapQ :: forall u. (forall d. Data d => d -> u) -> GenTextMethods -> [u]
    gmapQ :: forall u. (forall d. Data d => d -> u) -> GenTextMethods -> [u]
    $cgmapQi :: forall u.
    Int -> (forall d. Data d => d -> u) -> GenTextMethods -> u
    gmapQi :: forall u.
    Int -> (forall d. Data d => d -> u) -> GenTextMethods -> u
    $cgmapM :: forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d)
    -> GenTextMethods -> m GenTextMethods
    gmapM :: forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d)
    -> GenTextMethods -> m GenTextMethods
    $cgmapMp :: forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> GenTextMethods -> m GenTextMethods
    gmapMp :: forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> GenTextMethods -> m GenTextMethods
    $cgmapMo :: forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> GenTextMethods -> m GenTextMethods
    gmapMo :: forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> GenTextMethods -> m GenTextMethods
    Data
               , Int -> GenTextMethods
    GenTextMethods -> Int
    GenTextMethods -> [GenTextMethods]
    GenTextMethods -> GenTextMethods
    GenTextMethods -> GenTextMethods -> [GenTextMethods]
    GenTextMethods
    -> GenTextMethods -> GenTextMethods -> [GenTextMethods]
    (GenTextMethods -> GenTextMethods)
    -> (GenTextMethods -> GenTextMethods)
    -> (Int -> GenTextMethods)
    -> (GenTextMethods -> Int)
    -> (GenTextMethods -> [GenTextMethods])
    -> (GenTextMethods -> GenTextMethods -> [GenTextMethods])
    -> (GenTextMethods -> GenTextMethods -> [GenTextMethods])
    -> (GenTextMethods
        -> GenTextMethods -> GenTextMethods -> [GenTextMethods])
    -> Enum GenTextMethods
    forall a.
    (a -> a)
    -> (a -> a)
    -> (Int -> a)
    -> (a -> Int)
    -> (a -> [a])
    -> (a -> a -> [a])
    -> (a -> a -> [a])
    -> (a -> a -> a -> [a])
    -> Enum a
    $csucc :: GenTextMethods -> GenTextMethods
    succ :: GenTextMethods -> GenTextMethods
    $cpred :: GenTextMethods -> GenTextMethods
    pred :: GenTextMethods -> GenTextMethods
    $ctoEnum :: Int -> GenTextMethods
    toEnum :: Int -> GenTextMethods
    $cfromEnum :: GenTextMethods -> Int
    fromEnum :: GenTextMethods -> Int
    $cenumFrom :: GenTextMethods -> [GenTextMethods]
    enumFrom :: GenTextMethods -> [GenTextMethods]
    $cenumFromThen :: GenTextMethods -> GenTextMethods -> [GenTextMethods]
    enumFromThen :: GenTextMethods -> GenTextMethods -> [GenTextMethods]
    $cenumFromTo :: GenTextMethods -> GenTextMethods -> [GenTextMethods]
    enumFromTo :: GenTextMethods -> GenTextMethods -> [GenTextMethods]
    $cenumFromThenTo :: GenTextMethods
    -> GenTextMethods -> GenTextMethods -> [GenTextMethods]
    enumFromThenTo :: GenTextMethods
    -> GenTextMethods -> GenTextMethods -> [GenTextMethods]
    Enum
               , GenTextMethods -> GenTextMethods -> Bool
    (GenTextMethods -> GenTextMethods -> Bool)
    -> (GenTextMethods -> GenTextMethods -> Bool) -> Eq GenTextMethods
    forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
    $c== :: GenTextMethods -> GenTextMethods -> Bool
    == :: GenTextMethods -> GenTextMethods -> Bool
    $c/= :: GenTextMethods -> GenTextMethods -> Bool
    /= :: GenTextMethods -> GenTextMethods -> Bool
    Eq
               , (forall x. GenTextMethods -> Rep GenTextMethods x)
    -> (forall x. Rep GenTextMethods x -> GenTextMethods)
    -> Generic GenTextMethods
    forall x. Rep GenTextMethods x -> GenTextMethods
    forall x. GenTextMethods -> Rep GenTextMethods x
    forall a.
    (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
    $cfrom :: forall x. GenTextMethods -> Rep GenTextMethods x
    from :: forall x. GenTextMethods -> Rep GenTextMethods x
    $cto :: forall x. Rep GenTextMethods x -> GenTextMethods
    to :: forall x. Rep GenTextMethods x -> GenTextMethods
    Generic
               , Ord GenTextMethods
    Ord GenTextMethods =>
    ((GenTextMethods, GenTextMethods) -> [GenTextMethods])
    -> ((GenTextMethods, GenTextMethods) -> GenTextMethods -> Int)
    -> ((GenTextMethods, GenTextMethods) -> GenTextMethods -> Int)
    -> ((GenTextMethods, GenTextMethods) -> GenTextMethods -> Bool)
    -> ((GenTextMethods, GenTextMethods) -> Int)
    -> ((GenTextMethods, GenTextMethods) -> Int)
    -> Ix GenTextMethods
    (GenTextMethods, GenTextMethods) -> Int
    (GenTextMethods, GenTextMethods) -> [GenTextMethods]
    (GenTextMethods, GenTextMethods) -> GenTextMethods -> Bool
    (GenTextMethods, GenTextMethods) -> GenTextMethods -> Int
    forall a.
    Ord a =>
    ((a, a) -> [a])
    -> ((a, a) -> a -> Int)
    -> ((a, a) -> a -> Int)
    -> ((a, a) -> a -> Bool)
    -> ((a, a) -> Int)
    -> ((a, a) -> Int)
    -> Ix a
    $crange :: (GenTextMethods, GenTextMethods) -> [GenTextMethods]
    range :: (GenTextMethods, GenTextMethods) -> [GenTextMethods]
    $cindex :: (GenTextMethods, GenTextMethods) -> GenTextMethods -> Int
    index :: (GenTextMethods, GenTextMethods) -> GenTextMethods -> Int
    $cunsafeIndex :: (GenTextMethods, GenTextMethods) -> GenTextMethods -> Int
    unsafeIndex :: (GenTextMethods, GenTextMethods) -> GenTextMethods -> Int
    $cinRange :: (GenTextMethods, GenTextMethods) -> GenTextMethods -> Bool
    inRange :: (GenTextMethods, GenTextMethods) -> GenTextMethods -> Bool
    $crangeSize :: (GenTextMethods, GenTextMethods) -> Int
    rangeSize :: (GenTextMethods, GenTextMethods) -> Int
    $cunsafeRangeSize :: (GenTextMethods, GenTextMethods) -> Int
    unsafeRangeSize :: (GenTextMethods, GenTextMethods) -> Int
    Ix
               , Eq GenTextMethods
    Eq GenTextMethods =>
    (GenTextMethods -> GenTextMethods -> Ordering)
    -> (GenTextMethods -> GenTextMethods -> Bool)
    -> (GenTextMethods -> GenTextMethods -> Bool)
    -> (GenTextMethods -> GenTextMethods -> Bool)
    -> (GenTextMethods -> GenTextMethods -> Bool)
    -> (GenTextMethods -> GenTextMethods -> GenTextMethods)
    -> (GenTextMethods -> GenTextMethods -> GenTextMethods)
    -> Ord GenTextMethods
    GenTextMethods -> GenTextMethods -> Bool
    GenTextMethods -> GenTextMethods -> Ordering
    GenTextMethods -> GenTextMethods -> GenTextMethods
    forall a.
    Eq a =>
    (a -> a -> Ordering)
    -> (a -> a -> Bool)
    -> (a -> a -> Bool)
    -> (a -> a -> Bool)
    -> (a -> a -> Bool)
    -> (a -> a -> a)
    -> (a -> a -> a)
    -> Ord a
    $ccompare :: GenTextMethods -> GenTextMethods -> Ordering
    compare :: GenTextMethods -> GenTextMethods -> Ordering
    $c< :: GenTextMethods -> GenTextMethods -> Bool
    < :: GenTextMethods -> GenTextMethods -> Bool
    $c<= :: GenTextMethods -> GenTextMethods -> Bool
    <= :: GenTextMethods -> GenTextMethods -> Bool
    $c> :: GenTextMethods -> GenTextMethods -> Bool
    > :: GenTextMethods -> GenTextMethods -> Bool
    $c>= :: GenTextMethods -> GenTextMethods -> Bool
    >= :: GenTextMethods -> GenTextMethods -> Bool
    $cmax :: GenTextMethods -> GenTextMethods -> GenTextMethods
    max :: GenTextMethods -> GenTextMethods -> GenTextMethods
    $cmin :: GenTextMethods -> GenTextMethods -> GenTextMethods
    min :: GenTextMethods -> GenTextMethods -> GenTextMethods
    Ord
               , ReadPrec [GenTextMethods]
    ReadPrec GenTextMethods
    Int -> ReadS GenTextMethods
    ReadS [GenTextMethods]
    (Int -> ReadS GenTextMethods)
    -> ReadS [GenTextMethods]
    -> ReadPrec GenTextMethods
    -> ReadPrec [GenTextMethods]
    -> Read GenTextMethods
    forall a.
    (Int -> ReadS a)
    -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
    $creadsPrec :: Int -> ReadS GenTextMethods
    readsPrec :: Int -> ReadS GenTextMethods
    $creadList :: ReadS [GenTextMethods]
    readList :: ReadS [GenTextMethods]
    $creadPrec :: ReadPrec GenTextMethods
    readPrec :: ReadPrec GenTextMethods
    $creadListPrec :: ReadPrec [GenTextMethods]
    readListPrec :: ReadPrec [GenTextMethods]
    Read
               , Int -> GenTextMethods -> ShowS
    [GenTextMethods] -> ShowS
    GenTextMethods -> String
    (Int -> GenTextMethods -> ShowS)
    -> (GenTextMethods -> String)
    -> ([GenTextMethods] -> ShowS)
    -> Show GenTextMethods
    forall a.
    (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
    $cshowsPrec :: Int -> GenTextMethods -> ShowS
    showsPrec :: Int -> GenTextMethods -> ShowS
    $cshow :: GenTextMethods -> String
    show :: GenTextMethods -> String
    $cshowList :: [GenTextMethods] -> ShowS
    showList :: [GenTextMethods] -> ShowS
    Show
               , (forall (m :: * -> *). Quote m => GenTextMethods -> m Exp)
    -> (forall (m :: * -> *).
        Quote m =>
        GenTextMethods -> Code m GenTextMethods)
    -> Lift GenTextMethods
    forall t.
    (forall (m :: * -> *). Quote m => t -> m Exp)
    -> (forall (m :: * -> *). Quote m => t -> Code m t) -> Lift t
    forall (m :: * -> *). Quote m => GenTextMethods -> m Exp
    forall (m :: * -> *).
    Quote m =>
    GenTextMethods -> Code m GenTextMethods
    $clift :: forall (m :: * -> *). Quote m => GenTextMethods -> m Exp
    lift :: forall (m :: * -> *). Quote m => GenTextMethods -> m Exp
    $cliftTyped :: forall (m :: * -> *).
    Quote m =>
    GenTextMethods -> Code m GenTextMethods
    liftTyped :: forall (m :: * -> *).
    Quote m =>
    GenTextMethods -> Code m GenTextMethods
    Lift
               )

    -- | Sensible default 'Options'.
    --
    -- /Since: 3.4/
    defaultOptions :: Options
    defaultOptions :: Options
    defaultOptions =
      Options { genTextMethods :: GenTextMethods
    genTextMethods    = GenTextMethods
    SometimesTextMethods
              , emptyCaseBehavior :: Bool
    emptyCaseBehavior = Bool
    False
              }