packages feed

thrift-compiler-0.1.0.1: test/fixtures/gen-hs2/D/Types.hs

-----------------------------------------------------------------
-- Autogenerated by Thrift
--
-- DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
--  @generated
-----------------------------------------------------------------
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE BangPatterns #-}
{-# OPTIONS_GHC -fno-warn-unused-imports#-}
{-# OPTIONS_GHC -fno-warn-overlapping-patterns#-}
{-# OPTIONS_GHC -fno-warn-incomplete-patterns#-}
{-# OPTIONS_GHC -fno-warn-incomplete-uni-patterns#-}
{-# OPTIONS_GHC -fno-warn-incomplete-record-updates#-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module D.Types
       (Hstypedef, Hsnewtypeann(Hsnewtypeann, unHsnewtypeann),
        HsStruct(HsStruct, hsStruct_strictann, hsStruct_lazyann,
                 hsStruct_inherit),
        HsStrictAnn(HsStrictAnn, hsStrictAnn_strictann,
                    hsStrictAnn_lazyann, hsStrictAnn_inherit),
        HsLazyAnn(HsLazyAnn, hsLazyAnn_strictann, hsLazyAnn_lazyann,
                  hsLazyAnn_inherit),
        HsPrefixAnn(HsPrefixAnn, structprefixstrictann,
                    structprefixlazyann, structprefixinherit),
        HsUnion(HsUnion_EMPTY, HsUnion_left, HsUnion_right),
        HsUnionNonEmptyAnn(HsUnionNonEmptyAnn_left,
                           HsUnionNonEmptyAnn_right),
        HsEnum(HsEnum_ONE, HsEnum_TWO, HsEnum_THREE, HsEnum__UNKNOWN),
        HsEnumEmpty(HsEnumEmpty__UNKNOWN),
        HsEnumNoUnknownAnn(HsEnumNoUnknownAnn_ONE, HsEnumNoUnknownAnn_TWO,
                           HsEnumNoUnknownAnn_THREE),
        HsEnumEmptyNoUnknownAnn(),
        HsEnumPseudoenumAnn(HsEnumPseudoenumAnn, unHsEnumPseudoenumAnn),
        hsEnumPseudoenumAnn_ONE, hsEnumPseudoenumAnn_TWO,
        hsEnumPseudoenumAnn_THREE,
        HsEnumDuplicatedPseudoenumAnn(HsEnumDuplicatedPseudoenumAnn,
                                      unHsEnumDuplicatedPseudoenumAnn),
        hsEnumDuplicatedPseudoenumAnn_ONE,
        hsEnumDuplicatedPseudoenumAnn_TWO,
        hsEnumDuplicatedPseudoenumAnn_THREE,
        HsEnumEmptyPseudoenumAnn(HsEnumEmptyPseudoenumAnn,
                                 unHsEnumEmptyPseudoenumAnn),
        HsEnumPseudoenumThriftAnn(HsEnumPseudoenumThriftAnn,
                                  unHsEnumPseudoenumThriftAnn),
        hsEnumPseudoenumThriftAnn_ONE, hsEnumPseudoenumThriftAnn_TWO,
        hsEnumPseudoenumThriftAnn_THREE,
        HsEnumEmptyPseudoenumThriftAnn(HsEnumEmptyPseudoenumThriftAnn,
                                       unHsEnumEmptyPseudoenumThriftAnn),
        HsStructOfComplexTypes(HsStructOfComplexTypes,
                               hsStructOfComplexTypes_a_struct, hsStructOfComplexTypes_a_union,
                               hsStructOfComplexTypes_an_enum,
                               hsStructOfComplexTypes_a_pseudoenum,
                               hsStructOfComplexTypes_a_thrift_pseudoenum))
       where
import qualified Control.DeepSeq as DeepSeq
import qualified Control.Exception as Exception
import qualified Control.Monad as Monad
import qualified Control.Monad.ST.Trans as ST
import qualified Control.Monad.Trans.Class as Trans
import qualified Data.Aeson as Aeson
import qualified Data.Aeson.Types as Aeson
import qualified Data.Default as Default
import qualified Data.Function as Function
import qualified Data.HashMap.Strict as HashMap
import qualified Data.Hashable as Hashable
import qualified Data.Int as Int
import qualified Data.List as List
import qualified Data.Map.Strict as Map
import qualified Data.Ord as Ord
import qualified Data.Text as Text
import qualified Data.Text.Encoding as Text
import qualified GHC.Magic as GHC
import qualified Prelude as Prelude
import qualified Thrift.Binary.Parser as Parser
import qualified Thrift.CodegenTypesOnly as Thrift
import Control.Applicative ((<|>), (*>), (<*))
import Data.Aeson ((.:), (.:?), (.=), (.!=))
import Data.Aeson ((.:), (.=))
import Data.Monoid ((<>))
import Prelude ((.), (++), (>), (==))
import Prelude ((.), (<$>), (<*>), (>>=), (==), (++))
import Prelude ((.), (<$>), (<*>), (>>=), (==), (/=), (<), (++))

type Hstypedef = Map.Map Text.Text Text.Text

newtype Hsnewtypeann = Hsnewtypeann{unHsnewtypeann ::
                                    Map.Map Text.Text Text.Text}
                       deriving (Prelude.Eq, Prelude.Show, DeepSeq.NFData, Prelude.Ord)

instance Hashable.Hashable Hsnewtypeann where
  hashWithSalt __salt (Hsnewtypeann __val)
    = Hashable.hashWithSalt __salt
        ((Prelude.map (\ (_k, _v) -> (_k, _v)) . Map.toAscList) __val)

instance Aeson.ToJSON Hsnewtypeann where
  toJSON (Hsnewtypeann __val) = Aeson.toJSON __val

data HsStruct = HsStruct{hsStruct_strictann ::
                         {-# UNPACK #-} !Int.Int32,
                         hsStruct_lazyann :: Int.Int32, hsStruct_inherit :: Int.Int32}
                deriving (Prelude.Eq, Prelude.Show, Prelude.Ord)

instance Aeson.ToJSON HsStruct where
  toJSON
    (HsStruct __field__strictann __field__lazyann __field__inherit)
    = Aeson.object
        ("strictann" .= __field__strictann :
           "lazyann" .= __field__lazyann :
             "inherit" .= __field__inherit : Prelude.mempty)

instance Thrift.ThriftStruct HsStruct where
  buildStruct _proxy
    (HsStruct __field__strictann __field__lazyann __field__inherit)
    = Thrift.genStruct _proxy
        (Thrift.genFieldPrim _proxy "strictann" (Thrift.getI32Type _proxy)
           1
           0
           (Thrift.genI32Prim _proxy)
           __field__strictann
           :
           Thrift.genFieldPrim _proxy "lazyann" (Thrift.getI32Type _proxy) 2 1
             (Thrift.genI32Prim _proxy)
             __field__lazyann
             :
             Thrift.genFieldPrim _proxy "inherit" (Thrift.getI32Type _proxy) 3 2
               (Thrift.genI32Prim _proxy)
               __field__inherit
               : [])
  parseStruct _proxy
    = ST.runSTT
        (do Prelude.return ()
            __field__strictann <- ST.newSTRef Default.def
            __field__lazyann <- ST.newSTRef Default.def
            __field__inherit <- ST.newSTRef Default.def
            let
              _parse _lastId
                = do _fieldBegin <- Trans.lift
                                      (Thrift.parseFieldBegin _proxy _lastId _idMap)
                     case _fieldBegin of
                       Thrift.FieldBegin _type _id _bool -> do case _id of
                                                                 1 | _type ==
                                                                       Thrift.getI32Type _proxy
                                                                     ->
                                                                     do !_val <- Trans.lift
                                                                                   (Thrift.parseI32
                                                                                      _proxy)
                                                                        ST.writeSTRef
                                                                          __field__strictann
                                                                          _val
                                                                 2 | _type ==
                                                                       Thrift.getI32Type _proxy
                                                                     ->
                                                                     do !_val <- Trans.lift
                                                                                   (Thrift.parseI32
                                                                                      _proxy)
                                                                        ST.writeSTRef
                                                                          __field__lazyann
                                                                          _val
                                                                 3 | _type ==
                                                                       Thrift.getI32Type _proxy
                                                                     ->
                                                                     do !_val <- Trans.lift
                                                                                   (Thrift.parseI32
                                                                                      _proxy)
                                                                        ST.writeSTRef
                                                                          __field__inherit
                                                                          _val
                                                                 _ -> Trans.lift
                                                                        (Thrift.parseSkip _proxy
                                                                           _type
                                                                           (Prelude.Just _bool))
                                                               _parse _id
                       Thrift.FieldEnd -> do !__val__strictann <- ST.readSTRef
                                                                    __field__strictann
                                             !__val__lazyann <- ST.readSTRef __field__lazyann
                                             !__val__inherit <- ST.readSTRef __field__inherit
                                             Prelude.pure
                                               (HsStruct __val__strictann __val__lazyann
                                                  __val__inherit)
              _idMap
                = HashMap.fromList
                    [("strictann", 1), ("lazyann", 2), ("inherit", 3)]
            _parse 0)

instance DeepSeq.NFData HsStruct where
  rnf (HsStruct __field__strictann __field__lazyann __field__inherit)
    = DeepSeq.rnf __field__strictann `Prelude.seq`
        DeepSeq.rnf __field__lazyann `Prelude.seq`
          DeepSeq.rnf __field__inherit `Prelude.seq` ()

instance Default.Default HsStruct where
  def = HsStruct Default.def Default.def Default.def

instance Hashable.Hashable HsStruct where
  hashWithSalt __salt (HsStruct _strictann _lazyann _inherit)
    = Hashable.hashWithSalt
        (Hashable.hashWithSalt (Hashable.hashWithSalt __salt _strictann)
           _lazyann)
        _inherit

data HsStrictAnn = HsStrictAnn{hsStrictAnn_strictann ::
                               {-# UNPACK #-} !Int.Int32,
                               hsStrictAnn_lazyann :: Int.Int32,
                               hsStrictAnn_inherit :: {-# UNPACK #-} !Int.Int32}
                   deriving (Prelude.Eq, Prelude.Show, Prelude.Ord)

instance Aeson.ToJSON HsStrictAnn where
  toJSON
    (HsStrictAnn __field__strictann __field__lazyann __field__inherit)
    = Aeson.object
        ("strictann" .= __field__strictann :
           "lazyann" .= __field__lazyann :
             "inherit" .= __field__inherit : Prelude.mempty)

instance Thrift.ThriftStruct HsStrictAnn where
  buildStruct _proxy
    (HsStrictAnn __field__strictann __field__lazyann __field__inherit)
    = Thrift.genStruct _proxy
        (Thrift.genFieldPrim _proxy "strictann" (Thrift.getI32Type _proxy)
           1
           0
           (Thrift.genI32Prim _proxy)
           __field__strictann
           :
           Thrift.genFieldPrim _proxy "lazyann" (Thrift.getI32Type _proxy) 2 1
             (Thrift.genI32Prim _proxy)
             __field__lazyann
             :
             Thrift.genFieldPrim _proxy "inherit" (Thrift.getI32Type _proxy) 3 2
               (Thrift.genI32Prim _proxy)
               __field__inherit
               : [])
  parseStruct _proxy
    = ST.runSTT
        (do Prelude.return ()
            __field__strictann <- ST.newSTRef Default.def
            __field__lazyann <- ST.newSTRef Default.def
            __field__inherit <- ST.newSTRef Default.def
            let
              _parse _lastId
                = do _fieldBegin <- Trans.lift
                                      (Thrift.parseFieldBegin _proxy _lastId _idMap)
                     case _fieldBegin of
                       Thrift.FieldBegin _type _id _bool -> do case _id of
                                                                 1 | _type ==
                                                                       Thrift.getI32Type _proxy
                                                                     ->
                                                                     do !_val <- Trans.lift
                                                                                   (Thrift.parseI32
                                                                                      _proxy)
                                                                        ST.writeSTRef
                                                                          __field__strictann
                                                                          _val
                                                                 2 | _type ==
                                                                       Thrift.getI32Type _proxy
                                                                     ->
                                                                     do !_val <- Trans.lift
                                                                                   (Thrift.parseI32
                                                                                      _proxy)
                                                                        ST.writeSTRef
                                                                          __field__lazyann
                                                                          _val
                                                                 3 | _type ==
                                                                       Thrift.getI32Type _proxy
                                                                     ->
                                                                     do !_val <- Trans.lift
                                                                                   (Thrift.parseI32
                                                                                      _proxy)
                                                                        ST.writeSTRef
                                                                          __field__inherit
                                                                          _val
                                                                 _ -> Trans.lift
                                                                        (Thrift.parseSkip _proxy
                                                                           _type
                                                                           (Prelude.Just _bool))
                                                               _parse _id
                       Thrift.FieldEnd -> do !__val__strictann <- ST.readSTRef
                                                                    __field__strictann
                                             !__val__lazyann <- ST.readSTRef __field__lazyann
                                             !__val__inherit <- ST.readSTRef __field__inherit
                                             Prelude.pure
                                               (HsStrictAnn __val__strictann __val__lazyann
                                                  __val__inherit)
              _idMap
                = HashMap.fromList
                    [("strictann", 1), ("lazyann", 2), ("inherit", 3)]
            _parse 0)

instance DeepSeq.NFData HsStrictAnn where
  rnf
    (HsStrictAnn __field__strictann __field__lazyann __field__inherit)
    = DeepSeq.rnf __field__strictann `Prelude.seq`
        DeepSeq.rnf __field__lazyann `Prelude.seq`
          DeepSeq.rnf __field__inherit `Prelude.seq` ()

instance Default.Default HsStrictAnn where
  def = HsStrictAnn Default.def Default.def Default.def

instance Hashable.Hashable HsStrictAnn where
  hashWithSalt __salt (HsStrictAnn _strictann _lazyann _inherit)
    = Hashable.hashWithSalt
        (Hashable.hashWithSalt (Hashable.hashWithSalt __salt _strictann)
           _lazyann)
        _inherit

data HsLazyAnn = HsLazyAnn{hsLazyAnn_strictann ::
                           {-# UNPACK #-} !Int.Int32,
                           hsLazyAnn_lazyann :: Int.Int32, hsLazyAnn_inherit :: Int.Int32}
                 deriving (Prelude.Eq, Prelude.Show, Prelude.Ord)

instance Aeson.ToJSON HsLazyAnn where
  toJSON
    (HsLazyAnn __field__strictann __field__lazyann __field__inherit)
    = Aeson.object
        ("strictann" .= __field__strictann :
           "lazyann" .= __field__lazyann :
             "inherit" .= __field__inherit : Prelude.mempty)

instance Thrift.ThriftStruct HsLazyAnn where
  buildStruct _proxy
    (HsLazyAnn __field__strictann __field__lazyann __field__inherit)
    = Thrift.genStruct _proxy
        (Thrift.genFieldPrim _proxy "strictann" (Thrift.getI32Type _proxy)
           1
           0
           (Thrift.genI32Prim _proxy)
           __field__strictann
           :
           Thrift.genFieldPrim _proxy "lazyann" (Thrift.getI32Type _proxy) 2 1
             (Thrift.genI32Prim _proxy)
             __field__lazyann
             :
             Thrift.genFieldPrim _proxy "inherit" (Thrift.getI32Type _proxy) 3 2
               (Thrift.genI32Prim _proxy)
               __field__inherit
               : [])
  parseStruct _proxy
    = ST.runSTT
        (do Prelude.return ()
            __field__strictann <- ST.newSTRef Default.def
            __field__lazyann <- ST.newSTRef Default.def
            __field__inherit <- ST.newSTRef Default.def
            let
              _parse _lastId
                = do _fieldBegin <- Trans.lift
                                      (Thrift.parseFieldBegin _proxy _lastId _idMap)
                     case _fieldBegin of
                       Thrift.FieldBegin _type _id _bool -> do case _id of
                                                                 1 | _type ==
                                                                       Thrift.getI32Type _proxy
                                                                     ->
                                                                     do !_val <- Trans.lift
                                                                                   (Thrift.parseI32
                                                                                      _proxy)
                                                                        ST.writeSTRef
                                                                          __field__strictann
                                                                          _val
                                                                 2 | _type ==
                                                                       Thrift.getI32Type _proxy
                                                                     ->
                                                                     do !_val <- Trans.lift
                                                                                   (Thrift.parseI32
                                                                                      _proxy)
                                                                        ST.writeSTRef
                                                                          __field__lazyann
                                                                          _val
                                                                 3 | _type ==
                                                                       Thrift.getI32Type _proxy
                                                                     ->
                                                                     do !_val <- Trans.lift
                                                                                   (Thrift.parseI32
                                                                                      _proxy)
                                                                        ST.writeSTRef
                                                                          __field__inherit
                                                                          _val
                                                                 _ -> Trans.lift
                                                                        (Thrift.parseSkip _proxy
                                                                           _type
                                                                           (Prelude.Just _bool))
                                                               _parse _id
                       Thrift.FieldEnd -> do !__val__strictann <- ST.readSTRef
                                                                    __field__strictann
                                             !__val__lazyann <- ST.readSTRef __field__lazyann
                                             !__val__inherit <- ST.readSTRef __field__inherit
                                             Prelude.pure
                                               (HsLazyAnn __val__strictann __val__lazyann
                                                  __val__inherit)
              _idMap
                = HashMap.fromList
                    [("strictann", 1), ("lazyann", 2), ("inherit", 3)]
            _parse 0)

instance DeepSeq.NFData HsLazyAnn where
  rnf
    (HsLazyAnn __field__strictann __field__lazyann __field__inherit)
    = DeepSeq.rnf __field__strictann `Prelude.seq`
        DeepSeq.rnf __field__lazyann `Prelude.seq`
          DeepSeq.rnf __field__inherit `Prelude.seq` ()

instance Default.Default HsLazyAnn where
  def = HsLazyAnn Default.def Default.def Default.def

instance Hashable.Hashable HsLazyAnn where
  hashWithSalt __salt (HsLazyAnn _strictann _lazyann _inherit)
    = Hashable.hashWithSalt
        (Hashable.hashWithSalt (Hashable.hashWithSalt __salt _strictann)
           _lazyann)
        _inherit

data HsPrefixAnn = HsPrefixAnn{structprefixstrictann ::
                               {-# UNPACK #-} !Int.Int32,
                               structprefixlazyann :: Int.Int32, structprefixinherit :: Int.Int32}
                   deriving (Prelude.Eq, Prelude.Show, Prelude.Ord)

instance Aeson.ToJSON HsPrefixAnn where
  toJSON
    (HsPrefixAnn __field__strictann __field__lazyann __field__inherit)
    = Aeson.object
        ("strictann" .= __field__strictann :
           "lazyann" .= __field__lazyann :
             "inherit" .= __field__inherit : Prelude.mempty)

instance Thrift.ThriftStruct HsPrefixAnn where
  buildStruct _proxy
    (HsPrefixAnn __field__strictann __field__lazyann __field__inherit)
    = Thrift.genStruct _proxy
        (Thrift.genFieldPrim _proxy "strictann" (Thrift.getI32Type _proxy)
           1
           0
           (Thrift.genI32Prim _proxy)
           __field__strictann
           :
           Thrift.genFieldPrim _proxy "lazyann" (Thrift.getI32Type _proxy) 2 1
             (Thrift.genI32Prim _proxy)
             __field__lazyann
             :
             Thrift.genFieldPrim _proxy "inherit" (Thrift.getI32Type _proxy) 3 2
               (Thrift.genI32Prim _proxy)
               __field__inherit
               : [])
  parseStruct _proxy
    = ST.runSTT
        (do Prelude.return ()
            __field__strictann <- ST.newSTRef Default.def
            __field__lazyann <- ST.newSTRef Default.def
            __field__inherit <- ST.newSTRef Default.def
            let
              _parse _lastId
                = do _fieldBegin <- Trans.lift
                                      (Thrift.parseFieldBegin _proxy _lastId _idMap)
                     case _fieldBegin of
                       Thrift.FieldBegin _type _id _bool -> do case _id of
                                                                 1 | _type ==
                                                                       Thrift.getI32Type _proxy
                                                                     ->
                                                                     do !_val <- Trans.lift
                                                                                   (Thrift.parseI32
                                                                                      _proxy)
                                                                        ST.writeSTRef
                                                                          __field__strictann
                                                                          _val
                                                                 2 | _type ==
                                                                       Thrift.getI32Type _proxy
                                                                     ->
                                                                     do !_val <- Trans.lift
                                                                                   (Thrift.parseI32
                                                                                      _proxy)
                                                                        ST.writeSTRef
                                                                          __field__lazyann
                                                                          _val
                                                                 3 | _type ==
                                                                       Thrift.getI32Type _proxy
                                                                     ->
                                                                     do !_val <- Trans.lift
                                                                                   (Thrift.parseI32
                                                                                      _proxy)
                                                                        ST.writeSTRef
                                                                          __field__inherit
                                                                          _val
                                                                 _ -> Trans.lift
                                                                        (Thrift.parseSkip _proxy
                                                                           _type
                                                                           (Prelude.Just _bool))
                                                               _parse _id
                       Thrift.FieldEnd -> do !__val__strictann <- ST.readSTRef
                                                                    __field__strictann
                                             !__val__lazyann <- ST.readSTRef __field__lazyann
                                             !__val__inherit <- ST.readSTRef __field__inherit
                                             Prelude.pure
                                               (HsPrefixAnn __val__strictann __val__lazyann
                                                  __val__inherit)
              _idMap
                = HashMap.fromList
                    [("strictann", 1), ("lazyann", 2), ("inherit", 3)]
            _parse 0)

instance DeepSeq.NFData HsPrefixAnn where
  rnf
    (HsPrefixAnn __field__strictann __field__lazyann __field__inherit)
    = DeepSeq.rnf __field__strictann `Prelude.seq`
        DeepSeq.rnf __field__lazyann `Prelude.seq`
          DeepSeq.rnf __field__inherit `Prelude.seq` ()

instance Default.Default HsPrefixAnn where
  def = HsPrefixAnn Default.def Default.def Default.def

instance Hashable.Hashable HsPrefixAnn where
  hashWithSalt __salt (HsPrefixAnn _strictann _lazyann _inherit)
    = Hashable.hashWithSalt
        (Hashable.hashWithSalt (Hashable.hashWithSalt __salt _strictann)
           _lazyann)
        _inherit

data HsUnion = HsUnion_left Int.Int32
             | HsUnion_right Int.Int32
             | HsUnion_EMPTY
               deriving (Prelude.Eq, Prelude.Show, Prelude.Ord)

instance Aeson.ToJSON HsUnion where
  toJSON (HsUnion_left __left) = Aeson.object ["left" .= __left]
  toJSON (HsUnion_right __right) = Aeson.object ["right" .= __right]
  toJSON HsUnion_EMPTY = Aeson.object []

instance Thrift.ThriftStruct HsUnion where
  buildStruct _proxy (HsUnion_left __left)
    = Thrift.genStruct _proxy
        [Thrift.genFieldPrim _proxy "left" (Thrift.getI32Type _proxy) 1 0
           (Thrift.genI32Prim _proxy)
           __left]
  buildStruct _proxy (HsUnion_right __right)
    = Thrift.genStruct _proxy
        [Thrift.genFieldPrim _proxy "right" (Thrift.getI32Type _proxy) 2 0
           (Thrift.genI32Prim _proxy)
           __right]
  buildStruct _proxy HsUnion_EMPTY = Thrift.genStruct _proxy []
  parseStruct _proxy
    = do _fieldBegin <- Thrift.parseFieldBegin _proxy 0 _idMap
         case _fieldBegin of
           Thrift.FieldBegin _type _id _bool -> do case _id of
                                                     1 | _type == Thrift.getI32Type _proxy ->
                                                         do _val <- Thrift.parseI32 _proxy
                                                            Thrift.parseStop _proxy
                                                            Prelude.return (HsUnion_left _val)
                                                     2 | _type == Thrift.getI32Type _proxy ->
                                                         do _val <- Thrift.parseI32 _proxy
                                                            Thrift.parseStop _proxy
                                                            Prelude.return (HsUnion_right _val)
                                                     _ -> do Thrift.parseSkip _proxy _type
                                                               Prelude.Nothing
                                                             Thrift.parseStop _proxy
                                                             Prelude.return HsUnion_EMPTY
           Thrift.FieldEnd -> Prelude.return HsUnion_EMPTY
    where
      _idMap = HashMap.fromList [("left", 1), ("right", 2)]

instance DeepSeq.NFData HsUnion where
  rnf (HsUnion_left __left) = DeepSeq.rnf __left
  rnf (HsUnion_right __right) = DeepSeq.rnf __right
  rnf HsUnion_EMPTY = ()

instance Default.Default HsUnion where
  def = HsUnion_EMPTY

instance Hashable.Hashable HsUnion where
  hashWithSalt __salt (HsUnion_left _left)
    = Hashable.hashWithSalt __salt (Hashable.hashWithSalt 1 _left)
  hashWithSalt __salt (HsUnion_right _right)
    = Hashable.hashWithSalt __salt (Hashable.hashWithSalt 2 _right)
  hashWithSalt __salt HsUnion_EMPTY
    = Hashable.hashWithSalt __salt (0 :: Prelude.Int)

data HsUnionNonEmptyAnn = HsUnionNonEmptyAnn_left Int.Int32
                        | HsUnionNonEmptyAnn_right Int.Int32
                          deriving (Prelude.Eq, Prelude.Show, Prelude.Ord)

instance Aeson.ToJSON HsUnionNonEmptyAnn where
  toJSON (HsUnionNonEmptyAnn_left __left)
    = Aeson.object ["left" .= __left]
  toJSON (HsUnionNonEmptyAnn_right __right)
    = Aeson.object ["right" .= __right]

instance Thrift.ThriftStruct HsUnionNonEmptyAnn where
  buildStruct _proxy (HsUnionNonEmptyAnn_left __left)
    = Thrift.genStruct _proxy
        [Thrift.genFieldPrim _proxy "left" (Thrift.getI32Type _proxy) 1 0
           (Thrift.genI32Prim _proxy)
           __left]
  buildStruct _proxy (HsUnionNonEmptyAnn_right __right)
    = Thrift.genStruct _proxy
        [Thrift.genFieldPrim _proxy "right" (Thrift.getI32Type _proxy) 2 0
           (Thrift.genI32Prim _proxy)
           __right]
  parseStruct _proxy
    = do _fieldBegin <- Thrift.parseFieldBegin _proxy 0 _idMap
         case _fieldBegin of
           Thrift.FieldBegin _type _id _bool -> do case _id of
                                                     1 | _type == Thrift.getI32Type _proxy ->
                                                         do _val <- Thrift.parseI32 _proxy
                                                            Thrift.parseStop _proxy
                                                            Prelude.return
                                                              (HsUnionNonEmptyAnn_left _val)
                                                     2 | _type == Thrift.getI32Type _proxy ->
                                                         do _val <- Thrift.parseI32 _proxy
                                                            Thrift.parseStop _proxy
                                                            Prelude.return
                                                              (HsUnionNonEmptyAnn_right _val)
                                                     _ -> Prelude.fail
                                                            ("unrecognized alternative for union 'HsUnionNonEmptyAnn': "
                                                               ++ Prelude.show _id)
           Thrift.FieldEnd -> Prelude.fail
                                "union 'HsUnionNonEmptyAnn' is empty"
    where
      _idMap = HashMap.fromList [("left", 1), ("right", 2)]

instance DeepSeq.NFData HsUnionNonEmptyAnn where
  rnf (HsUnionNonEmptyAnn_left __left) = DeepSeq.rnf __left
  rnf (HsUnionNonEmptyAnn_right __right) = DeepSeq.rnf __right

instance Default.Default HsUnionNonEmptyAnn where
  def = HsUnionNonEmptyAnn_left Default.def

instance Hashable.Hashable HsUnionNonEmptyAnn where
  hashWithSalt __salt (HsUnionNonEmptyAnn_left _left)
    = Hashable.hashWithSalt __salt (Hashable.hashWithSalt 1 _left)
  hashWithSalt __salt (HsUnionNonEmptyAnn_right _right)
    = Hashable.hashWithSalt __salt (Hashable.hashWithSalt 2 _right)

data HsEnum = HsEnum_ONE
            | HsEnum_TWO
            | HsEnum_THREE
            | HsEnum__UNKNOWN Prelude.Int
              deriving (Prelude.Eq, Prelude.Show)

instance Aeson.ToJSON HsEnum where
  toJSON = Aeson.toJSON . Thrift.fromThriftEnum

instance DeepSeq.NFData HsEnum where
  rnf __HsEnum = Prelude.seq __HsEnum ()

instance Default.Default HsEnum where
  def = HsEnum_ONE

instance Hashable.Hashable HsEnum where
  hashWithSalt _salt _val
    = Hashable.hashWithSalt _salt (Thrift.fromThriftEnum _val)

instance Thrift.ThriftEnum HsEnum where
  toThriftEnum 1 = HsEnum_ONE
  toThriftEnum 2 = HsEnum_TWO
  toThriftEnum 3 = HsEnum_THREE
  toThriftEnum val = HsEnum__UNKNOWN val
  fromThriftEnum HsEnum_ONE = 1
  fromThriftEnum HsEnum_TWO = 2
  fromThriftEnum HsEnum_THREE = 3
  fromThriftEnum (HsEnum__UNKNOWN val) = val
  allThriftEnumValues = [HsEnum_ONE, HsEnum_TWO, HsEnum_THREE]
  toThriftEnumEither 1 = Prelude.Right HsEnum_ONE
  toThriftEnumEither 2 = Prelude.Right HsEnum_TWO
  toThriftEnumEither 3 = Prelude.Right HsEnum_THREE
  toThriftEnumEither val
    = Prelude.Left
        ("toThriftEnumEither: not a valid identifier for enum HsEnum: " ++
           Prelude.show val)

instance Prelude.Ord HsEnum where
  compare = Function.on Prelude.compare Thrift.fromThriftEnum

data HsEnumEmpty = HsEnumEmpty__UNKNOWN Prelude.Int
                   deriving (Prelude.Eq, Prelude.Show, Prelude.Ord)

instance Aeson.ToJSON HsEnumEmpty where
  toJSON = Aeson.toJSON . Thrift.fromThriftEnum

instance DeepSeq.NFData HsEnumEmpty where
  rnf __HsEnumEmpty = Prelude.seq __HsEnumEmpty ()

instance Default.Default HsEnumEmpty where
  def
    = Exception.throw
        (Thrift.ProtocolException
           "def: enum HsEnumEmpty has no constructors")

instance Hashable.Hashable HsEnumEmpty where
  hashWithSalt _salt _val
    = Hashable.hashWithSalt _salt (Thrift.fromThriftEnum _val)

instance Thrift.ThriftEnum HsEnumEmpty where
  toThriftEnum val = HsEnumEmpty__UNKNOWN val
  fromThriftEnum (HsEnumEmpty__UNKNOWN val) = val
  allThriftEnumValues = []
  toThriftEnumEither val
    = Prelude.Left
        ("toThriftEnumEither: not a valid identifier for enum HsEnumEmpty: "
           ++ Prelude.show val)

data HsEnumNoUnknownAnn = HsEnumNoUnknownAnn_ONE
                        | HsEnumNoUnknownAnn_TWO
                        | HsEnumNoUnknownAnn_THREE
                          deriving (Prelude.Eq, Prelude.Show)

instance Aeson.ToJSON HsEnumNoUnknownAnn where
  toJSON = Aeson.toJSON . Thrift.fromThriftEnum

instance DeepSeq.NFData HsEnumNoUnknownAnn where
  rnf __HsEnumNoUnknownAnn = Prelude.seq __HsEnumNoUnknownAnn ()

instance Default.Default HsEnumNoUnknownAnn where
  def = HsEnumNoUnknownAnn_ONE

instance Hashable.Hashable HsEnumNoUnknownAnn where
  hashWithSalt _salt _val
    = Hashable.hashWithSalt _salt (Thrift.fromThriftEnum _val)

instance Thrift.ThriftEnum HsEnumNoUnknownAnn where
  toThriftEnum 1 = HsEnumNoUnknownAnn_ONE
  toThriftEnum 2 = HsEnumNoUnknownAnn_TWO
  toThriftEnum 3 = HsEnumNoUnknownAnn_THREE
  toThriftEnum _val
    = Exception.throw
        (Thrift.ProtocolException
           ("toThriftEnum: not a valid identifier for enum HsEnumNoUnknownAnn: "
              ++ Prelude.show _val))
  fromThriftEnum HsEnumNoUnknownAnn_ONE = 1
  fromThriftEnum HsEnumNoUnknownAnn_TWO = 2
  fromThriftEnum HsEnumNoUnknownAnn_THREE = 3
  fromThriftEnum _val
    = Exception.throw
        (Thrift.ProtocolException
           ("fromThriftEnum: not a valid identifier for enum HsEnumNoUnknownAnn: "
              ++ Prelude.show _val))
  allThriftEnumValues
    = [HsEnumNoUnknownAnn_ONE, HsEnumNoUnknownAnn_TWO,
       HsEnumNoUnknownAnn_THREE]
  toThriftEnumEither 1 = Prelude.Right HsEnumNoUnknownAnn_ONE
  toThriftEnumEither 2 = Prelude.Right HsEnumNoUnknownAnn_TWO
  toThriftEnumEither 3 = Prelude.Right HsEnumNoUnknownAnn_THREE
  toThriftEnumEither val
    = Prelude.Left
        ("toThriftEnumEither: not a valid identifier for enum HsEnumNoUnknownAnn: "
           ++ Prelude.show val)

instance Prelude.Ord HsEnumNoUnknownAnn where
  compare = Function.on Prelude.compare Thrift.fromThriftEnum

data HsEnumEmptyNoUnknownAnn

instance Prelude.Eq HsEnumEmptyNoUnknownAnn where
  (==)
    = Exception.throw
        (Thrift.ProtocolException
           "(==): Thrift enum 'HsEnumEmptyNoUnknownAnn' is uninhabited")

instance Prelude.Show HsEnumEmptyNoUnknownAnn where
  show
    = Exception.throw
        (Thrift.ProtocolException
           "show: Thrift enum 'HsEnumEmptyNoUnknownAnn' is uninhabited")

instance Prelude.Ord HsEnumEmptyNoUnknownAnn where
  compare
    = Exception.throw
        (Thrift.ProtocolException
           "compare: Thrift enum 'HsEnumEmptyNoUnknownAnn' is uninhabited")

instance Aeson.ToJSON HsEnumEmptyNoUnknownAnn where
  toJSON
    = Exception.throw
        (Thrift.ProtocolException
           "toJSON: Thrift enum 'HsEnumEmptyNoUnknownAnn' is uninhabited")

instance Default.Default HsEnumEmptyNoUnknownAnn where
  def
    = Exception.throw
        (Thrift.ProtocolException
           "def: Thrift enum 'HsEnumEmptyNoUnknownAnn' is uninhabited")

instance Hashable.Hashable HsEnumEmptyNoUnknownAnn where
  hashWithSalt
    = Exception.throw
        (Thrift.ProtocolException
           "hashWithSalt: Thrift enum 'HsEnumEmptyNoUnknownAnn' is uninhabited")

instance DeepSeq.NFData HsEnumEmptyNoUnknownAnn where
  rnf
    = Exception.throw
        (Thrift.ProtocolException
           "rnf: Thrift enum 'HsEnumEmptyNoUnknownAnn' is uninhabited")

instance Thrift.ThriftEnum HsEnumEmptyNoUnknownAnn where
  toThriftEnum
    = Exception.throw
        (Thrift.ProtocolException
           "toThriftEnum: Thrift enum 'HsEnumEmptyNoUnknownAnn' is uninhabited")
  fromThriftEnum
    = Exception.throw
        (Thrift.ProtocolException
           "fromThriftEnum: Thrift enum 'HsEnumEmptyNoUnknownAnn' is uninhabited")
  allThriftEnumValues = []
  toThriftEnumEither val
    = Prelude.Left
        ("toThriftEnumEither: not a valid identifier for enum HsEnumEmptyNoUnknownAnn: "
           ++ Prelude.show val)

newtype HsEnumPseudoenumAnn = HsEnumPseudoenumAnn{unHsEnumPseudoenumAnn
                                                  :: Int.Int32}
                              deriving (Prelude.Eq, Prelude.Show, DeepSeq.NFData, Prelude.Ord)

instance Hashable.Hashable HsEnumPseudoenumAnn where
  hashWithSalt __salt (HsEnumPseudoenumAnn __val)
    = Hashable.hashWithSalt __salt __val

instance Aeson.ToJSON HsEnumPseudoenumAnn where
  toJSON (HsEnumPseudoenumAnn __val) = Aeson.toJSON __val

hsEnumPseudoenumAnn_ONE :: HsEnumPseudoenumAnn
hsEnumPseudoenumAnn_ONE = HsEnumPseudoenumAnn 1

hsEnumPseudoenumAnn_TWO :: HsEnumPseudoenumAnn
hsEnumPseudoenumAnn_TWO = HsEnumPseudoenumAnn 2

hsEnumPseudoenumAnn_THREE :: HsEnumPseudoenumAnn
hsEnumPseudoenumAnn_THREE = HsEnumPseudoenumAnn 3

newtype HsEnumDuplicatedPseudoenumAnn = HsEnumDuplicatedPseudoenumAnn{unHsEnumDuplicatedPseudoenumAnn
                                                                      :: Int.Int32}
                                        deriving (Prelude.Eq, Prelude.Show, DeepSeq.NFData,
                                                  Prelude.Ord)

instance Hashable.Hashable HsEnumDuplicatedPseudoenumAnn where
  hashWithSalt __salt (HsEnumDuplicatedPseudoenumAnn __val)
    = Hashable.hashWithSalt __salt __val

instance Aeson.ToJSON HsEnumDuplicatedPseudoenumAnn where
  toJSON (HsEnumDuplicatedPseudoenumAnn __val) = Aeson.toJSON __val

hsEnumDuplicatedPseudoenumAnn_ONE :: HsEnumDuplicatedPseudoenumAnn
hsEnumDuplicatedPseudoenumAnn_ONE = HsEnumDuplicatedPseudoenumAnn 1

hsEnumDuplicatedPseudoenumAnn_TWO :: HsEnumDuplicatedPseudoenumAnn
hsEnumDuplicatedPseudoenumAnn_TWO = HsEnumDuplicatedPseudoenumAnn 2

hsEnumDuplicatedPseudoenumAnn_THREE ::
                                    HsEnumDuplicatedPseudoenumAnn
hsEnumDuplicatedPseudoenumAnn_THREE
  = HsEnumDuplicatedPseudoenumAnn 3

newtype HsEnumEmptyPseudoenumAnn = HsEnumEmptyPseudoenumAnn{unHsEnumEmptyPseudoenumAnn
                                                            :: Int.Int32}
                                   deriving (Prelude.Eq, Prelude.Show, DeepSeq.NFData, Prelude.Ord)

instance Hashable.Hashable HsEnumEmptyPseudoenumAnn where
  hashWithSalt __salt (HsEnumEmptyPseudoenumAnn __val)
    = Hashable.hashWithSalt __salt __val

instance Aeson.ToJSON HsEnumEmptyPseudoenumAnn where
  toJSON (HsEnumEmptyPseudoenumAnn __val) = Aeson.toJSON __val

newtype HsEnumPseudoenumThriftAnn = HsEnumPseudoenumThriftAnn{unHsEnumPseudoenumThriftAnn
                                                              :: Int.Int32}
                                    deriving (Prelude.Eq, DeepSeq.NFData, Prelude.Ord)

instance Hashable.Hashable HsEnumPseudoenumThriftAnn where
  hashWithSalt __salt (HsEnumPseudoenumThriftAnn __val)
    = Hashable.hashWithSalt __salt __val

instance Aeson.ToJSON HsEnumPseudoenumThriftAnn where
  toJSON (HsEnumPseudoenumThriftAnn __val) = Aeson.toJSON __val

hsEnumPseudoenumThriftAnn_ONE :: HsEnumPseudoenumThriftAnn
hsEnumPseudoenumThriftAnn_ONE = HsEnumPseudoenumThriftAnn 1

hsEnumPseudoenumThriftAnn_TWO :: HsEnumPseudoenumThriftAnn
hsEnumPseudoenumThriftAnn_TWO = HsEnumPseudoenumThriftAnn 2

hsEnumPseudoenumThriftAnn_THREE :: HsEnumPseudoenumThriftAnn
hsEnumPseudoenumThriftAnn_THREE = HsEnumPseudoenumThriftAnn 3

instance Default.Default HsEnumPseudoenumThriftAnn where
  def = hsEnumPseudoenumThriftAnn_ONE

instance Prelude.Show HsEnumPseudoenumThriftAnn where
  showsPrec __d (HsEnumPseudoenumThriftAnn __val)
    = case HashMap.lookup __val __m of
        Prelude.Just __s -> Prelude.showString __s
        Prelude.Nothing -> Prelude.showParen (__d > 10)
                             (Prelude.showString "HsEnumPseudoenumThriftAnn__UNKNOWN " .
                                Prelude.showsPrec 11 __val)
    where
      __m
        = HashMap.fromList
            [(1, "HsEnumPseudoenumThriftAnn_ONE"),
             (2, "HsEnumPseudoenumThriftAnn_TWO"),
             (3, "HsEnumPseudoenumThriftAnn_THREE")]

instance Thrift.ThriftEnum HsEnumPseudoenumThriftAnn where
  toThriftEnum __val
    = HsEnumPseudoenumThriftAnn (Prelude.fromIntegral __val)
  fromThriftEnum (HsEnumPseudoenumThriftAnn __val)
    = Prelude.fromIntegral __val
  allThriftEnumValues
    = [hsEnumPseudoenumThriftAnn_ONE, hsEnumPseudoenumThriftAnn_TWO,
       hsEnumPseudoenumThriftAnn_THREE]
  toThriftEnumEither val
    = if Prelude.elem __val Thrift.allThriftEnumValues then
        Prelude.Right __val else
        Prelude.Left
          ("toThriftEnumEither: not a valid identifier for enum HsEnumPseudoenumThriftAnn: "
             ++ Prelude.show val)
    where
      __val = HsEnumPseudoenumThriftAnn (Prelude.fromIntegral val)

newtype HsEnumEmptyPseudoenumThriftAnn = HsEnumEmptyPseudoenumThriftAnn{unHsEnumEmptyPseudoenumThriftAnn
                                                                        :: Int.Int32}
                                         deriving (Prelude.Eq, DeepSeq.NFData, Prelude.Ord)

instance Hashable.Hashable HsEnumEmptyPseudoenumThriftAnn where
  hashWithSalt __salt (HsEnumEmptyPseudoenumThriftAnn __val)
    = Hashable.hashWithSalt __salt __val

instance Aeson.ToJSON HsEnumEmptyPseudoenumThriftAnn where
  toJSON (HsEnumEmptyPseudoenumThriftAnn __val) = Aeson.toJSON __val

instance Default.Default HsEnumEmptyPseudoenumThriftAnn where
  def
    = Exception.throw
        (Thrift.ProtocolException
           "def: enum HsEnumEmptyPseudoenumThriftAnn has no constructors")

instance Prelude.Show HsEnumEmptyPseudoenumThriftAnn where
  showsPrec __d (HsEnumEmptyPseudoenumThriftAnn __val)
    = case HashMap.lookup __val __m of
        Prelude.Just __s -> Prelude.showString __s
        Prelude.Nothing -> Prelude.showParen (__d > 10)
                             (Prelude.showString "HsEnumEmptyPseudoenumThriftAnn__UNKNOWN " .
                                Prelude.showsPrec 11 __val)
    where
      __m = HashMap.fromList []

instance Thrift.ThriftEnum HsEnumEmptyPseudoenumThriftAnn where
  toThriftEnum __val
    = HsEnumEmptyPseudoenumThriftAnn (Prelude.fromIntegral __val)
  fromThriftEnum (HsEnumEmptyPseudoenumThriftAnn __val)
    = Prelude.fromIntegral __val
  allThriftEnumValues = []
  toThriftEnumEither val
    = if Prelude.elem __val Thrift.allThriftEnumValues then
        Prelude.Right __val else
        Prelude.Left
          ("toThriftEnumEither: not a valid identifier for enum HsEnumEmptyPseudoenumThriftAnn: "
             ++ Prelude.show val)
    where
      __val = HsEnumEmptyPseudoenumThriftAnn (Prelude.fromIntegral val)

data HsStructOfComplexTypes = HsStructOfComplexTypes{hsStructOfComplexTypes_a_struct
                                                     :: HsStruct,
                                                     hsStructOfComplexTypes_a_union :: HsUnion,
                                                     hsStructOfComplexTypes_an_enum :: HsEnum,
                                                     hsStructOfComplexTypes_a_pseudoenum ::
                                                     HsEnumPseudoenumAnn,
                                                     hsStructOfComplexTypes_a_thrift_pseudoenum ::
                                                     HsEnumPseudoenumThriftAnn}
                              deriving (Prelude.Eq, Prelude.Show, Prelude.Ord)

instance Aeson.ToJSON HsStructOfComplexTypes where
  toJSON
    (HsStructOfComplexTypes __field__a_struct __field__a_union
       __field__an_enum __field__a_pseudoenum
       __field__a_thrift_pseudoenum)
    = Aeson.object
        ("a_struct" .= __field__a_struct :
           "a_union" .= __field__a_union :
             "an_enum" .= __field__an_enum :
               "a_pseudoenum" .= unHsEnumPseudoenumAnn __field__a_pseudoenum :
                 "a_thrift_pseudoenum" .=
                   unHsEnumPseudoenumThriftAnn __field__a_thrift_pseudoenum
                   : Prelude.mempty)

instance Thrift.ThriftStruct HsStructOfComplexTypes where
  buildStruct _proxy
    (HsStructOfComplexTypes __field__a_struct __field__a_union
       __field__an_enum __field__a_pseudoenum
       __field__a_thrift_pseudoenum)
    = Thrift.genStruct _proxy
        (Thrift.genField _proxy "a_struct" (Thrift.getStructType _proxy) 1
           0
           (Thrift.buildStruct _proxy __field__a_struct)
           :
           Thrift.genField _proxy "a_union" (Thrift.getStructType _proxy) 2 1
             (Thrift.buildStruct _proxy __field__a_union)
             :
             Thrift.genField _proxy "an_enum" (Thrift.getI32Type _proxy) 3 2
               ((Thrift.genI32 _proxy . Prelude.fromIntegral .
                   Thrift.fromThriftEnum)
                  __field__an_enum)
               :
               Thrift.genField _proxy "a_pseudoenum" (Thrift.getI32Type _proxy) 4
                 3
                 ((Thrift.genI32 _proxy . unHsEnumPseudoenumAnn)
                    __field__a_pseudoenum)
                 :
                 Thrift.genField _proxy "a_thrift_pseudoenum"
                   (Thrift.getI32Type _proxy)
                   5
                   4
                   ((Thrift.genI32 _proxy . unHsEnumPseudoenumThriftAnn)
                      __field__a_thrift_pseudoenum)
                   : [])
  parseStruct _proxy
    = ST.runSTT
        (do Prelude.return ()
            __field__a_struct <- ST.newSTRef Default.def
            __field__a_union <- ST.newSTRef Default.def
            __field__an_enum <- ST.newSTRef Default.def
            __field__a_pseudoenum <- ST.newSTRef
                                       (HsEnumPseudoenumAnn Default.def)
            __field__a_thrift_pseudoenum <- ST.newSTRef
                                              (HsEnumPseudoenumThriftAnn Default.def)
            let
              _parse _lastId
                = do _fieldBegin <- Trans.lift
                                      (Thrift.parseFieldBegin _proxy _lastId _idMap)
                     case _fieldBegin of
                       Thrift.FieldBegin _type _id _bool -> do case _id of
                                                                 1 | _type ==
                                                                       Thrift.getStructType _proxy
                                                                     ->
                                                                     do !_val <- Trans.lift
                                                                                   (Thrift.parseStruct
                                                                                      _proxy)
                                                                        ST.writeSTRef
                                                                          __field__a_struct
                                                                          _val
                                                                 2 | _type ==
                                                                       Thrift.getStructType _proxy
                                                                     ->
                                                                     do !_val <- Trans.lift
                                                                                   (Thrift.parseStruct
                                                                                      _proxy)
                                                                        ST.writeSTRef
                                                                          __field__a_union
                                                                          _val
                                                                 3 | _type ==
                                                                       Thrift.getI32Type _proxy
                                                                     ->
                                                                     do !_val <- Trans.lift
                                                                                   (Thrift.parseEnum
                                                                                      _proxy
                                                                                      "HsEnum")
                                                                        ST.writeSTRef
                                                                          __field__an_enum
                                                                          _val
                                                                 4 | _type ==
                                                                       Thrift.getI32Type _proxy
                                                                     ->
                                                                     do !_val <- Trans.lift
                                                                                   (Prelude.fmap
                                                                                      HsEnumPseudoenumAnn
                                                                                      (Thrift.parseI32
                                                                                         _proxy))
                                                                        ST.writeSTRef
                                                                          __field__a_pseudoenum
                                                                          _val
                                                                 5 | _type ==
                                                                       Thrift.getI32Type _proxy
                                                                     ->
                                                                     do !_val <- Trans.lift
                                                                                   (Prelude.fmap
                                                                                      HsEnumPseudoenumThriftAnn
                                                                                      (Thrift.parseI32
                                                                                         _proxy))
                                                                        ST.writeSTRef
                                                                          __field__a_thrift_pseudoenum
                                                                          _val
                                                                 _ -> Trans.lift
                                                                        (Thrift.parseSkip _proxy
                                                                           _type
                                                                           (Prelude.Just _bool))
                                                               _parse _id
                       Thrift.FieldEnd -> do !__val__a_struct <- ST.readSTRef
                                                                   __field__a_struct
                                             !__val__a_union <- ST.readSTRef __field__a_union
                                             !__val__an_enum <- ST.readSTRef __field__an_enum
                                             !__val__a_pseudoenum <- ST.readSTRef
                                                                       __field__a_pseudoenum
                                             !__val__a_thrift_pseudoenum <- ST.readSTRef
                                                                              __field__a_thrift_pseudoenum
                                             Prelude.pure
                                               (HsStructOfComplexTypes __val__a_struct
                                                  __val__a_union
                                                  __val__an_enum
                                                  __val__a_pseudoenum
                                                  __val__a_thrift_pseudoenum)
              _idMap
                = HashMap.fromList
                    [("a_struct", 1), ("a_union", 2), ("an_enum", 3),
                     ("a_pseudoenum", 4), ("a_thrift_pseudoenum", 5)]
            _parse 0)

instance DeepSeq.NFData HsStructOfComplexTypes where
  rnf
    (HsStructOfComplexTypes __field__a_struct __field__a_union
       __field__an_enum __field__a_pseudoenum
       __field__a_thrift_pseudoenum)
    = DeepSeq.rnf __field__a_struct `Prelude.seq`
        DeepSeq.rnf __field__a_union `Prelude.seq`
          DeepSeq.rnf __field__an_enum `Prelude.seq`
            DeepSeq.rnf __field__a_pseudoenum `Prelude.seq`
              DeepSeq.rnf __field__a_thrift_pseudoenum `Prelude.seq` ()

instance Default.Default HsStructOfComplexTypes where
  def
    = HsStructOfComplexTypes Default.def Default.def Default.def
        (HsEnumPseudoenumAnn Default.def)
        (HsEnumPseudoenumThriftAnn Default.def)

instance Hashable.Hashable HsStructOfComplexTypes where
  hashWithSalt __salt
    (HsStructOfComplexTypes _a_struct _a_union _an_enum _a_pseudoenum
       _a_thrift_pseudoenum)
    = Hashable.hashWithSalt
        (Hashable.hashWithSalt
           (Hashable.hashWithSalt
              (Hashable.hashWithSalt (Hashable.hashWithSalt __salt _a_struct)
                 _a_union)
              _an_enum)
           _a_pseudoenum)
        _a_thrift_pseudoenum