    {-
    (c) The GRASP/AQUA Project, Glasgow University, 1992-1998

    \section[GHC.Builtin.Names]{Definitions of prelude modules and names}

    Nota Bene: all Names defined in here should come from the base package,
    the big-num package or (for plugins) the ghc package.

     - ModuleNames for prelude modules,
            e.g.    pRELUDE_NAME :: ModuleName

     - Modules for prelude modules
            e.g.    pRELUDE :: Module

     - Uniques for Ids, DataCons, TyCons and Classes that the compiler
       "knows about" in some way
            e.g.    orderingTyConKey :: Unique
                    minusClassOpKey :: Unique

     - Names for Ids, DataCons, TyCons and Classes that the compiler
       "knows about" in some way
            e.g.    orderingTyConName :: Name
                    minusName    :: Name
       One of these Names contains
            (a) the module and occurrence name of the thing
            (b) its Unique
       The way the compiler "knows about" one of these things is
       where the type checker or desugarer needs to look it up. For
       example, when desugaring list comprehensions the desugarer
       needs to conjure up 'foldr'.  It does this by looking up
       foldrName in the environment.

     - RdrNames for Ids, DataCons etc that the compiler may emit into
       generated code (e.g. for deriving).
            e.g.    and_RDR :: RdrName
       It's not necessary to know the uniques for these guys, only their names

    Note [Known-key names]
    ~~~~~~~~~~~~~~~~~~~~~~
    It is *very* important that the compiler gives wired-in things and
    things with "known-key" names the correct Uniques wherever they
    occur. We have to be careful about this in exactly two places:

      1. When we parse some source code, renaming the AST better yield an
         AST whose Names have the correct uniques

      2. When we read an interface file, the read-in gubbins better have
         the right uniques

    This is accomplished through a combination of mechanisms:

      1. When parsing source code, the RdrName-decorated AST has some
         RdrNames which are Exact. These are wired-in RdrNames where
         we could directly tell from the parsed syntax what Name to
         use. For example, when we parse a [] in a type we can just insert
         an Exact RdrName Name with the listTyConKey.

         Currently, I believe this is just an optimisation: it would be
         equally valid to just output Orig RdrNames that correctly record
         the module etc we expect the final Name to come from. However,
         were we to eliminate isBuiltInOcc_maybe it would become essential
         (see point 3).

      2. The knownKeyNames (which consist of the basicKnownKeyNames from
         the module, and those names reachable via the wired-in stuff from
         GHC.Builtin.Types) are used to initialise the "OrigNameCache" in
         GHC.Iface.Env.  This initialization ensures that when the type checker
         or renamer (both of which use GHC.Iface.Env) look up an original name
         (i.e. a pair of a Module and an OccName) for a known-key name
         they get the correct Unique.

         This is the most important mechanism for ensuring that known-key
         stuff gets the right Unique, and is why it is so important to
         place your known-key names in the appropriate lists.

      3. For "infinite families" of known-key names (i.e. tuples and sums), we
         have to be extra careful. Because there are an infinite number of
         these things, we cannot add them to the list of known-key names
         used to initialise the OrigNameCache. Instead, we have to
         rely on never having to look them up in that cache. See
         Note [Infinite families of known-key names] for details.

    Note [Infinite families of known-key names]
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Infinite families of known-key things (e.g. tuples and sums) pose a tricky
    problem: we can't add them to the knownKeyNames finite map which we use to
    ensure that, e.g., a reference to (,) gets assigned the right unique (if this
    doesn't sound familiar see Note [Known-key names] above).

    We instead handle tuples and sums separately from the "vanilla" known-key
    things,

      a) The parser recognises them specially and generates an Exact Name (hence not
         looked up in the orig-name cache)

      b) The known infinite families of names are specially serialised by
         GHC.Iface.Binary.putName, with that special treatment detected when we read
         back to ensure that we get back to the correct uniques. See Note [Symbol
         table representation of names] in GHC.Iface.Binary and Note [How tuples
         work] in GHC.Builtin.Types.

    Most of the infinite families cannot occur in source code, so mechanisms (a) and (b)
    suffice to ensure that they always have the right Unique. In particular,
    implicit param TyCon names, constraint tuples and Any TyCons cannot be mentioned
    by the user. For those things that *can* appear in source programs,

      c) GHC.Iface.Env.lookupOrigNameCache uses isBuiltInOcc_maybe to map built-in syntax
         directly onto the corresponding name, rather than trying to find it in the
         original-name cache.

         See also Note [Built-in syntax and the OrigNameCache]

    Note that one-tuples are an exception to the rule, as they do get assigned
    known keys. See
    Note [One-tuples] (Wrinkle: Make boxed one-tuple names have known keys)
    in GHC.Builtin.Types.

    -}

    {-# LANGUAGE CPP #-}

    module GHC.Builtin.Names
       ( Unique, Uniquable(..), hasKey,  -- Re-exported for convenience

       -----------------------------------------------------------
       module GHC.Builtin.Names, -- A huge bunch of (a) Names,  e.g. intTyConName
                                 --                 (b) Uniques e.g. intTyConKey
                                 --                 (c) Groups of classes and types
                                 --                 (d) miscellaneous things
                                 -- So many that we export them all
       )
    where

    import GHC.Prelude

    import GHC.Unit.Types
    import GHC.Types.Name.Occurrence
    import GHC.Types.Name.Reader
    import GHC.Types.Unique
    import GHC.Builtin.Uniques
    import GHC.Types.Name
    import GHC.Types.SrcLoc
    import GHC.Data.FastString
    import GHC.Data.List.Infinite (Infinite (..))
    import qualified GHC.Data.List.Infinite as Inf

    import Language.Haskell.Syntax.Module.Name

    {-
    ************************************************************************
    *                                                                      *
         allNameStrings
    *                                                                      *
    ************************************************************************
    -}

    allNameStrings :: Infinite String
    -- Infinite list of a,b,c...z, aa, ab, ac, ... etc
    allNameStrings :: Infinite String
    allNameStrings = String -> Infinite String
    forall a. [a] -> Infinite [a]
    Inf.allListsOf [Char
    'a'..Char
    'z']

    allNameStringList :: [String]
    -- Infinite list of a,b,c...z, aa, ab, ac, ... etc
    allNameStringList :: [String]
    allNameStringList = Infinite String -> [String]
    forall a. Infinite a -> [a]
    Inf.toList Infinite String
    allNameStrings

    {-
    ************************************************************************
    *                                                                      *
    \subsection{Local Names}
    *                                                                      *
    ************************************************************************

    This *local* name is used by the interactive stuff
    -}

    itName :: Unique -> SrcSpan -> Name
    itName :: Unique -> SrcSpan -> Name
    itName Unique
    uniq SrcSpan
    loc = Unique -> OccName -> SrcSpan -> Name
    mkInternalName Unique
    uniq (NameSpace -> FastString -> OccName
    mkOccNameFS NameSpace
    varName (String -> FastString
    fsLit String
    "it")) SrcSpan
    loc

    -- mkUnboundName makes a place-holder Name; it shouldn't be looked at except possibly
    -- during compiler debugging.
    mkUnboundName :: OccName -> Name
    mkUnboundName :: OccName -> Name
    mkUnboundName OccName
    occ = Unique -> OccName -> SrcSpan -> Name
    mkInternalName Unique
    unboundKey OccName
    occ SrcSpan
    noSrcSpan

    isUnboundName :: Name -> Bool
    isUnboundName :: Name -> Bool
    isUnboundName Name
    name = Name
    name Name -> Unique -> Bool
    forall a. Uniquable a => a -> Unique -> Bool
    `hasKey` Unique
    unboundKey

    {-
    ************************************************************************
    *                                                                      *
    \subsection{Known key Names}
    *                                                                      *
    ************************************************************************

    This section tells what the compiler knows about the association of
    names with uniques.  These ones are the *non* wired-in ones.  The
    wired in ones are defined in GHC.Builtin.Types etc.
    -}

    basicKnownKeyNames :: [Name]  -- See Note [Known-key names]
    basicKnownKeyNames :: [Name]
    basicKnownKeyNames
     = [Name]
    genericTyConNames
     [Name] -> [Name] -> [Name]
    forall a. [a] -> [a] -> [a]
    ++ [   --  Classes.  *Must* include:
            --      classes that are grabbed by key (e.g., eqClassKey)
            --      classes in "Class.standardClassKeys" (quite a few)
            Name
    eqClassName,                    -- mentioned, derivable
            Name
    ordClassName,                   -- derivable
            Name
    boundedClassName,               -- derivable
            Name
    numClassName,                   -- mentioned, numeric
            Name
    enumClassName,                  -- derivable
            Name
    monadClassName,
            Name
    functorClassName,
            Name
    realClassName,                  -- numeric
            Name
    integralClassName,              -- numeric
            Name
    fractionalClassName,            -- numeric
            Name
    floatingClassName,              -- numeric
            Name
    realFracClassName,              -- numeric
            Name
    realFloatClassName,             -- numeric
            Name
    dataClassName,
            Name
    isStringClassName,
            Name
    applicativeClassName,
            Name
    alternativeClassName,
            Name
    foldableClassName,
            Name
    traversableClassName,
            Name
    semigroupClassName, Name
    sappendName,
            Name
    monoidClassName, Name
    memptyName, Name
    mappendName, Name
    mconcatName,

            -- The IO type
            Name
    ioTyConName, Name
    ioDataConName,
            Name
    runMainIOName,
            Name
    runRWName,

            -- Type representation types
            Name
    trModuleTyConName, Name
    trModuleDataConName,
            Name
    trNameTyConName, Name
    trNameSDataConName, Name
    trNameDDataConName,
            Name
    trTyConTyConName, Name
    trTyConDataConName,

            -- Typeable
            Name
    typeableClassName,
            Name
    typeRepTyConName,
            Name
    someTypeRepTyConName,
            Name
    someTypeRepDataConName,
            Name
    kindRepTyConName,
            Name
    kindRepTyConAppDataConName,
            Name
    kindRepVarDataConName,
            Name
    kindRepAppDataConName,
            Name
    kindRepFunDataConName,
            Name
    kindRepTYPEDataConName,
            Name
    kindRepTypeLitSDataConName,
            Name
    kindRepTypeLitDDataConName,
            Name
    typeLitSortTyConName,
            Name
    typeLitSymbolDataConName,
            Name
    typeLitNatDataConName,
            Name
    typeLitCharDataConName,
            Name
    typeRepIdName,
            Name
    mkTrTypeName,
            Name
    mkTrConName,
            Name
    mkTrAppName,
            Name
    mkTrFunName,
            Name
    typeSymbolTypeRepName, Name
    typeNatTypeRepName, Name
    typeCharTypeRepName,
            Name
    trGhcPrimModuleName,

            -- KindReps for common cases
            Name
    starKindRepName,
            Name
    starArrStarKindRepName,
            Name
    starArrStarArrStarKindRepName,
            Name
    constraintKindRepName,

            -- WithDict
            Name
    withDictClassName,

            -- DataToTag
            Name
    dataToTagClassName,

            -- seq#
            Name
    seqHashName,

            -- Dynamic
            Name
    toDynName,

            -- Numeric stuff
            Name
    negateName, Name
    minusName, Name
    geName, Name
    eqName,
            Name
    mkRationalBase2Name, Name
    mkRationalBase10Name,

            -- Conversion functions
            Name
    rationalTyConName,
            Name
    ratioTyConName, Name
    ratioDataConName,
            Name
    fromRationalName, Name
    fromIntegerName,
            Name
    toIntegerName, Name
    toRationalName,
            Name
    fromIntegralName, Name
    realToFracName,

            -- Int# stuff
            Name
    divIntName, Name
    modIntName,

            -- String stuff
            Name
    fromStringName,

            -- Enum stuff
            Name
    enumFromName, Name
    enumFromThenName,
            Name
    enumFromThenToName, Name
    enumFromToName,

            -- Applicative stuff
            Name
    pureAName, Name
    apAName, Name
    thenAName,

            -- Functor stuff
            Name
    fmapName,

            -- Monad stuff
            Name
    thenIOName, Name
    bindIOName, Name
    returnIOName, Name
    failIOName, Name
    bindMName, Name
    thenMName,
            Name
    returnMName, Name
    joinMName,

            -- MonadFail
            Name
    monadFailClassName, Name
    failMName,

            -- MonadFix
            Name
    monadFixClassName, Name
    mfixName,

            -- Arrow stuff
            Name
    arrAName, Name
    composeAName, Name
    firstAName,
            Name
    appAName, Name
    choiceAName, Name
    loopAName,

            -- Ix stuff
            Name
    ixClassName,

            -- Show stuff
            Name
    showClassName,

            -- Read stuff
            Name
    readClassName,

            -- Stable pointers
            Name
    newStablePtrName,

            -- GHC Extensions
            Name
    considerAccessibleName,

            -- Strings and lists
            Name
    unpackCStringName, Name
    unpackCStringUtf8Name,
            Name
    unpackCStringAppendName, Name
    unpackCStringAppendUtf8Name,
            Name
    unpackCStringFoldrName, Name
    unpackCStringFoldrUtf8Name,
            Name
    cstringLengthName,

            -- Overloaded lists
            Name
    isListClassName,
            Name
    fromListName,
            Name
    fromListNName,
            Name
    toListName,

            -- Non-empty lists
            Name
    nonEmptyTyConName,

            -- Overloaded record dot, record update
            Name
    getFieldName, Name
    setFieldName,

            -- List operations
            Name
    concatName, Name
    filterName, Name
    mapName,
            Name
    zipName, Name
    foldrName, Name
    buildName, Name
    augmentName, Name
    appendName,

            -- FFI primitive types that are not wired-in.
            Name
    stablePtrTyConName, Name
    ptrTyConName, Name
    funPtrTyConName, Name
    constPtrConName,
            Name
    int8TyConName, Name
    int16TyConName, Name
    int32TyConName, Name
    int64TyConName,
            Name
    word8TyConName, Name
    word16TyConName, Name
    word32TyConName, Name
    word64TyConName,
            Name
    jsvalTyConName,

            -- Others
            Name
    otherwiseIdName, Name
    inlineIdName,
            Name
    eqStringName, Name
    assertName,
            Name
    assertErrorName, Name
    traceName,
            Name
    printName,
            Name
    dollarName,

            -- ghc-bignum
            Name
    integerFromNaturalName,
            Name
    integerToNaturalClampName,
            Name
    integerToNaturalThrowName,
            Name
    integerToNaturalName,
            Name
    integerToWordName,
            Name
    integerToIntName,
            Name
    integerToWord64Name,
            Name
    integerToInt64Name,
            Name
    integerFromWordName,
            Name
    integerFromWord64Name,
            Name
    integerFromInt64Name,
            Name
    integerAddName,
            Name
    integerMulName,
            Name
    integerSubName,
            Name
    integerNegateName,
            Name
    integerAbsName,
            Name
    integerPopCountName,
            Name
    integerQuotName,
            Name
    integerRemName,
            Name
    integerDivName,
            Name
    integerModName,
            Name
    integerDivModName,
            Name
    integerQuotRemName,
            Name
    integerEncodeFloatName,
            Name
    integerEncodeDoubleName,
            Name
    integerGcdName,
            Name
    integerLcmName,
            Name
    integerAndName,
            Name
    integerOrName,
            Name
    integerXorName,
            Name
    integerComplementName,
            Name
    integerBitName,
            Name
    integerTestBitName,
            Name
    integerShiftLName,
            Name
    integerShiftRName,

            Name
    naturalToWordName,
            Name
    naturalPopCountName,
            Name
    naturalShiftRName,
            Name
    naturalShiftLName,
            Name
    naturalAddName,
            Name
    naturalSubName,
            Name
    naturalSubThrowName,
            Name
    naturalSubUnsafeName,
            Name
    naturalMulName,
            Name
    naturalQuotRemName,
            Name
    naturalQuotName,
            Name
    naturalRemName,
            Name
    naturalAndName,
            Name
    naturalAndNotName,
            Name
    naturalOrName,
            Name
    naturalXorName,
            Name
    naturalTestBitName,
            Name
    naturalBitName,
            Name
    naturalGcdName,
            Name
    naturalLcmName,
            Name
    naturalLog2Name,
            Name
    naturalLogBaseWordName,
            Name
    naturalLogBaseName,
            Name
    naturalPowModName,
            Name
    naturalSizeInBaseName,

            Name
    bignatEqName,

            -- Float/Double
            Name
    integerToFloatName,
            Name
    integerToDoubleName,
            Name
    naturalToFloatName,
            Name
    naturalToDoubleName,
            Name
    rationalToFloatName,
            Name
    rationalToDoubleName,

            -- Other classes
            Name
    monadPlusClassName,

            -- Type-level naturals
            Name
    knownNatClassName, Name
    knownSymbolClassName, Name
    knownCharClassName,

            -- Overloaded labels
            Name
    fromLabelClassOpName,

            -- Implicit Parameters
            Name
    ipClassName,

            -- Overloaded record fields
            Name
    hasFieldClassName,

            -- ExceptionContext
            Name
    exceptionContextTyConName,
            Name
    emptyExceptionContextName,

            -- Call Stacks
            Name
    callStackTyConName,
            Name
    emptyCallStackName, Name
    pushCallStackName,

            -- Source Locations
            Name
    srcLocDataConName,

            -- Annotation type checking
            Name
    toAnnotationWrapperName

            -- The SPEC type for SpecConstr
            , Name
    specTyConName

            -- The Either type
            , Name
    eitherTyConName, Name
    leftDataConName, Name
    rightDataConName

            -- The Void type
            , Name
    voidTyConName

            -- Plugins
            , Name
    pluginTyConName
            , Name
    frontendPluginTyConName

            -- Generics
            , Name
    genClassName, Name
    gen1ClassName
            , Name
    datatypeClassName, Name
    constructorClassName, Name
    selectorClassName

            -- Monad comprehensions
            , Name
    guardMName
            , Name
    liftMName
            , Name
    mzipName

            -- GHCi Sandbox
            , Name
    ghciIoClassName, Name
    ghciStepIoMName

            -- StaticPtr
            , Name
    makeStaticName
            , Name
    staticPtrTyConName
            , Name
    staticPtrDataConName, Name
    staticPtrInfoDataConName
            , Name
    fromStaticPtrName

            -- Fingerprint
            , Name
    fingerprintDataConName

            -- Custom type errors
            , Name
    errorMessageTypeErrorFamName
            , Name
    typeErrorTextDataConName
            , Name
    typeErrorAppendDataConName
            , Name
    typeErrorVAppendDataConName
            , Name
    typeErrorShowTypeDataConName

            -- "Unsatisfiable" constraint
            , Name
    unsatisfiableClassName
            , Name
    unsatisfiableIdName

            -- Unsafe coercion proofs
            , Name
    unsafeEqualityProofName
            , Name
    unsafeEqualityTyConName
            , Name
    unsafeReflDataConName
            , Name
    unsafeCoercePrimName
        ]

    genericTyConNames :: [Name]
    genericTyConNames :: [Name]
    genericTyConNames = [
        Name
    v1TyConName, Name
    u1TyConName, Name
    par1TyConName, Name
    rec1TyConName,
        Name
    k1TyConName, Name
    m1TyConName, Name
    sumTyConName, Name
    prodTyConName,
        Name
    compTyConName, Name
    rTyConName, Name
    dTyConName,
        Name
    cTyConName, Name
    sTyConName, Name
    rec0TyConName,
        Name
    d1TyConName, Name
    c1TyConName, Name
    s1TyConName,
        Name
    repTyConName, Name
    rep1TyConName, Name
    uRecTyConName,
        Name
    uAddrTyConName, Name
    uCharTyConName, Name
    uDoubleTyConName,
        Name
    uFloatTyConName, Name
    uIntTyConName, Name
    uWordTyConName,
        Name
    prefixIDataConName, Name
    infixIDataConName, Name
    leftAssociativeDataConName,
        Name
    rightAssociativeDataConName, Name
    notAssociativeDataConName,
        Name
    sourceUnpackDataConName, Name
    sourceNoUnpackDataConName,
        Name
    noSourceUnpackednessDataConName, Name
    sourceLazyDataConName,
        Name
    sourceStrictDataConName, Name
    noSourceStrictnessDataConName,
        Name
    decidedLazyDataConName, Name
    decidedStrictDataConName, Name
    decidedUnpackDataConName,
        Name
    metaDataDataConName, Name
    metaConsDataConName, Name
    metaSelDataConName
      ]

    {-
    ************************************************************************
    *                                                                      *
    \subsection{Module names}
    *                                                                      *
    ************************************************************************

    --MetaHaskell Extension Add a new module here
    -}

    gHC_PRIM, gHC_PRIM_PANIC,
        gHC_TYPES, gHC_INTERNAL_DATA_DATA, gHC_MAGIC, gHC_MAGIC_DICT,
        gHC_CLASSES, gHC_PRIMOPWRAPPERS :: Module
    gHC_PRIM :: Module
    gHC_PRIM           = FastString -> Module
    mkPrimModule (String -> FastString
    fsLit String
    "GHC.Prim")   -- Primitive types and values
    gHC_PRIM_PANIC :: Module
    gHC_PRIM_PANIC     = FastString -> Module
    mkPrimModule (String -> FastString
    fsLit String
    "GHC.Prim.Panic")
    gHC_TYPES :: Module
    gHC_TYPES          = FastString -> Module
    mkPrimModule (String -> FastString
    fsLit String
    "GHC.Types")
    gHC_MAGIC :: Module
    gHC_MAGIC          = FastString -> Module
    mkPrimModule (String -> FastString
    fsLit String
    "GHC.Magic")
    gHC_MAGIC_DICT :: Module
    gHC_MAGIC_DICT     = FastString -> Module
    mkPrimModule (String -> FastString
    fsLit String
    "GHC.Magic.Dict")
    gHC_CSTRING :: Module
    gHC_CSTRING        = FastString -> Module
    mkPrimModule (String -> FastString
    fsLit String
    "GHC.CString")
    gHC_CLASSES :: Module
    gHC_CLASSES        = FastString -> Module
    mkPrimModule (String -> FastString
    fsLit String
    "GHC.Classes")
    gHC_PRIMOPWRAPPERS :: Module
    gHC_PRIMOPWRAPPERS = FastString -> Module
    mkPrimModule (String -> FastString
    fsLit String
    "GHC.PrimopWrappers")

    gHC_INTERNAL_TUPLE :: Module
    gHC_INTERNAL_TUPLE                  = FastString -> Module
    mkPrimModule (String -> FastString
    fsLit String
    "GHC.Tuple")

    gHC_INTERNAL_CONTROL_MONAD_ZIP :: Module
    gHC_INTERNAL_CONTROL_MONAD_ZIP :: Module
    gHC_INTERNAL_CONTROL_MONAD_ZIP  = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.Control.Monad.Zip")

    gHC_INTERNAL_NUM_INTEGER, gHC_INTERNAL_NUM_NATURAL, gHC_INTERNAL_NUM_BIGNAT :: Module
    gHC_INTERNAL_NUM_INTEGER :: Module
    gHC_INTERNAL_NUM_INTEGER            = FastString -> Module
    mkBignumModule (String -> FastString
    fsLit String
    "GHC.Num.Integer")
    gHC_INTERNAL_NUM_NATURAL :: Module
    gHC_INTERNAL_NUM_NATURAL            = FastString -> Module
    mkBignumModule (String -> FastString
    fsLit String
    "GHC.Num.Natural")
    gHC_INTERNAL_NUM_BIGNAT :: Module
    gHC_INTERNAL_NUM_BIGNAT             = FastString -> Module
    mkBignumModule (String -> FastString
    fsLit String
    "GHC.Num.BigNat")

    gHC_INTERNAL_BASE, gHC_INTERNAL_ENUM,
        gHC_INTERNAL_GHCI, gHC_INTERNAL_GHCI_HELPERS, gHC_CSTRING, gHC_INTERNAL_DATA_STRING,
        gHC_INTERNAL_SHOW, gHC_INTERNAL_READ, gHC_INTERNAL_NUM, gHC_INTERNAL_MAYBE,
        gHC_INTERNAL_LIST, gHC_INTERNAL_TUPLE, gHC_INTERNAL_DATA_EITHER,
        gHC_INTERNAL_DATA_FOLDABLE, gHC_INTERNAL_DATA_TRAVERSABLE,
        gHC_INTERNAL_EXCEPTION_CONTEXT,
        gHC_INTERNAL_CONC, gHC_INTERNAL_IO, gHC_INTERNAL_IO_Exception,
        gHC_INTERNAL_ST, gHC_INTERNAL_IX, gHC_INTERNAL_STABLE, gHC_INTERNAL_PTR, gHC_INTERNAL_ERR, gHC_INTERNAL_REAL,
        gHC_INTERNAL_FLOAT, gHC_INTERNAL_TOP_HANDLER, gHC_INTERNAL_SYSTEM_IO, gHC_INTERNAL_DYNAMIC,
        gHC_INTERNAL_TYPEABLE, gHC_INTERNAL_TYPEABLE_INTERNAL, gHC_INTERNAL_GENERICS,
        gHC_INTERNAL_READ_PREC, gHC_INTERNAL_LEX, gHC_INTERNAL_INT, gHC_INTERNAL_WORD, gHC_INTERNAL_MONAD, gHC_INTERNAL_MONAD_FIX,  gHC_INTERNAL_MONAD_FAIL,
        gHC_INTERNAL_ARROW, gHC_INTERNAL_DESUGAR, gHC_INTERNAL_RANDOM, gHC_INTERNAL_EXTS, gHC_INTERNAL_IS_LIST,
        gHC_INTERNAL_CONTROL_EXCEPTION_BASE, gHC_INTERNAL_TYPEERROR, gHC_INTERNAL_TYPELITS, gHC_INTERNAL_TYPELITS_INTERNAL,
        gHC_INTERNAL_TYPENATS, gHC_INTERNAL_TYPENATS_INTERNAL,
        gHC_INTERNAL_DATA_COERCE, gHC_INTERNAL_DEBUG_TRACE, gHC_INTERNAL_UNSAFE_COERCE, gHC_INTERNAL_FOREIGN_C_CONSTPTR :: Module
    gHC_INTERNAL_BASE :: Module
    gHC_INTERNAL_BASE                   = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.Base")
    gHC_INTERNAL_ENUM :: Module
    gHC_INTERNAL_ENUM                   = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.Enum")
    gHC_INTERNAL_GHCI :: Module
    gHC_INTERNAL_GHCI                   = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.GHCi")
    gHC_INTERNAL_GHCI_HELPERS :: Module
    gHC_INTERNAL_GHCI_HELPERS           = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.GHCi.Helpers")
    gHC_INTERNAL_SHOW :: Module
    gHC_INTERNAL_SHOW                   = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.Show")
    gHC_INTERNAL_READ :: Module
    gHC_INTERNAL_READ                   = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.Read")
    gHC_INTERNAL_NUM :: Module
    gHC_INTERNAL_NUM                    = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.Num")
    gHC_INTERNAL_MAYBE :: Module
    gHC_INTERNAL_MAYBE                  = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.Maybe")
    gHC_INTERNAL_LIST :: Module
    gHC_INTERNAL_LIST                   = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.List")
    gHC_INTERNAL_DATA_EITHER :: Module
    gHC_INTERNAL_DATA_EITHER            = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.Data.Either")
    gHC_INTERNAL_DATA_STRING :: Module
    gHC_INTERNAL_DATA_STRING            = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.Data.String")
    gHC_INTERNAL_DATA_FOLDABLE :: Module
    gHC_INTERNAL_DATA_FOLDABLE          = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.Data.Foldable")
    gHC_INTERNAL_DATA_TRAVERSABLE :: Module
    gHC_INTERNAL_DATA_TRAVERSABLE       = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.Data.Traversable")
    gHC_INTERNAL_CONC :: Module
    gHC_INTERNAL_CONC                   = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.GHC.Conc")
    gHC_INTERNAL_IO :: Module
    gHC_INTERNAL_IO                     = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.IO")
    gHC_INTERNAL_IO_Exception :: Module
    gHC_INTERNAL_IO_Exception           = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.IO.Exception")
    gHC_INTERNAL_ST :: Module
    gHC_INTERNAL_ST                     = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.ST")
    gHC_INTERNAL_IX :: Module
    gHC_INTERNAL_IX                     = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.Ix")
    gHC_INTERNAL_STABLE :: Module
    gHC_INTERNAL_STABLE                 = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.Stable")
    gHC_INTERNAL_PTR :: Module
    gHC_INTERNAL_PTR                    = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.Ptr")
    gHC_INTERNAL_ERR :: Module
    gHC_INTERNAL_ERR                    = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.Err")
    gHC_INTERNAL_REAL :: Module
    gHC_INTERNAL_REAL                   = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.Real")
    gHC_INTERNAL_FLOAT :: Module
    gHC_INTERNAL_FLOAT                  = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.Float")
    gHC_INTERNAL_TOP_HANDLER :: Module
    gHC_INTERNAL_TOP_HANDLER            = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.TopHandler")
    gHC_INTERNAL_SYSTEM_IO :: Module
    gHC_INTERNAL_SYSTEM_IO              = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.System.IO")
    gHC_INTERNAL_DYNAMIC :: Module
    gHC_INTERNAL_DYNAMIC                = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.Data.Dynamic")
    gHC_INTERNAL_TYPEABLE :: Module
    gHC_INTERNAL_TYPEABLE               = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.Data.Typeable")
    gHC_INTERNAL_TYPEABLE_INTERNAL :: Module
    gHC_INTERNAL_TYPEABLE_INTERNAL      = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.Data.Typeable.Internal")
    gHC_INTERNAL_DATA_DATA :: Module
    gHC_INTERNAL_DATA_DATA              = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.Data.Data")
    gHC_INTERNAL_READ_PREC :: Module
    gHC_INTERNAL_READ_PREC              = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.Text.ParserCombinators.ReadPrec")
    gHC_INTERNAL_LEX :: Module
    gHC_INTERNAL_LEX                    = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.Text.Read.Lex")
    gHC_INTERNAL_INT :: Module
    gHC_INTERNAL_INT                    = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.Int")
    gHC_INTERNAL_WORD :: Module
    gHC_INTERNAL_WORD                   = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.Word")
    gHC_INTERNAL_MONAD :: Module
    gHC_INTERNAL_MONAD                  = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.Control.Monad")
    gHC_INTERNAL_MONAD_FIX :: Module
    gHC_INTERNAL_MONAD_FIX              = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.Control.Monad.Fix")
    gHC_INTERNAL_MONAD_FAIL :: Module
    gHC_INTERNAL_MONAD_FAIL             = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.Control.Monad.Fail")
    gHC_INTERNAL_ARROW :: Module
    gHC_INTERNAL_ARROW                  = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.Control.Arrow")
    gHC_INTERNAL_DESUGAR :: Module
    gHC_INTERNAL_DESUGAR                = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.Desugar")
    gHC_INTERNAL_RANDOM :: Module
    gHC_INTERNAL_RANDOM                 = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.System.Random")
    gHC_INTERNAL_EXTS :: Module
    gHC_INTERNAL_EXTS                   = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.Exts")
    gHC_INTERNAL_IS_LIST :: Module
    gHC_INTERNAL_IS_LIST                = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.IsList")
    gHC_INTERNAL_CONTROL_EXCEPTION_BASE :: Module
    gHC_INTERNAL_CONTROL_EXCEPTION_BASE = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.Control.Exception.Base")
    gHC_INTERNAL_EXCEPTION_CONTEXT :: Module
    gHC_INTERNAL_EXCEPTION_CONTEXT = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.Exception.Context")
    gHC_INTERNAL_GENERICS :: Module
    gHC_INTERNAL_GENERICS               = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.Generics")
    gHC_INTERNAL_TYPEERROR :: Module
    gHC_INTERNAL_TYPEERROR              = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.TypeError")
    gHC_INTERNAL_TYPELITS :: Module
    gHC_INTERNAL_TYPELITS               = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.TypeLits")
    gHC_INTERNAL_TYPELITS_INTERNAL :: Module
    gHC_INTERNAL_TYPELITS_INTERNAL      = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.TypeLits.Internal")
    gHC_INTERNAL_TYPENATS :: Module
    gHC_INTERNAL_TYPENATS               = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.TypeNats")
    gHC_INTERNAL_TYPENATS_INTERNAL :: Module
    gHC_INTERNAL_TYPENATS_INTERNAL      = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.TypeNats.Internal")
    gHC_INTERNAL_DATA_COERCE :: Module
    gHC_INTERNAL_DATA_COERCE            = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.Data.Coerce")
    gHC_INTERNAL_DEBUG_TRACE :: Module
    gHC_INTERNAL_DEBUG_TRACE            = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.Debug.Trace")
    gHC_INTERNAL_UNSAFE_COERCE :: Module
    gHC_INTERNAL_UNSAFE_COERCE          = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.Unsafe.Coerce")
    gHC_INTERNAL_FOREIGN_C_CONSTPTR :: Module
    gHC_INTERNAL_FOREIGN_C_CONSTPTR     = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.Foreign.C.ConstPtr")

    gHC_INTERNAL_SRCLOC :: Module
    gHC_INTERNAL_SRCLOC :: Module
    gHC_INTERNAL_SRCLOC = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.SrcLoc")

    gHC_INTERNAL_STACK, gHC_INTERNAL_STACK_TYPES :: Module
    gHC_INTERNAL_STACK :: Module
    gHC_INTERNAL_STACK = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.Stack")
    gHC_INTERNAL_STACK_TYPES :: Module
    gHC_INTERNAL_STACK_TYPES = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.Stack.Types")

    gHC_INTERNAL_STATICPTR :: Module
    gHC_INTERNAL_STATICPTR :: Module
    gHC_INTERNAL_STATICPTR = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.StaticPtr")

    gHC_INTERNAL_STATICPTR_INTERNAL :: Module
    gHC_INTERNAL_STATICPTR_INTERNAL :: Module
    gHC_INTERNAL_STATICPTR_INTERNAL = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.StaticPtr.Internal")

    gHC_INTERNAL_FINGERPRINT_TYPE :: Module
    gHC_INTERNAL_FINGERPRINT_TYPE :: Module
    gHC_INTERNAL_FINGERPRINT_TYPE = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.Fingerprint.Type")

    gHC_INTERNAL_OVER_LABELS :: Module
    gHC_INTERNAL_OVER_LABELS :: Module
    gHC_INTERNAL_OVER_LABELS = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.OverloadedLabels")

    gHC_INTERNAL_RECORDS :: Module
    gHC_INTERNAL_RECORDS :: Module
    gHC_INTERNAL_RECORDS = FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.Records")

    rOOT_MAIN :: Module
    rOOT_MAIN :: Module
    rOOT_MAIN       = FastString -> Module
    mkMainModule (String -> FastString
    fsLit String
    ":Main") -- Root module for initialisation

    mkInteractiveModule :: String -> Module
    -- (mkInteractiveMoudule "9") makes module 'interactive:Ghci9'
    mkInteractiveModule :: String -> Module
    mkInteractiveModule String
    n = Unit -> ModuleName -> Module
    forall u. u -> ModuleName -> GenModule u
    mkModule Unit
    interactiveUnit (String -> ModuleName
    mkModuleName (String
    "Ghci" String -> String -> String
    forall a. [a] -> [a] -> [a]
    ++ String
    n))

    pRELUDE_NAME, mAIN_NAME :: ModuleName
    pRELUDE_NAME :: ModuleName
    pRELUDE_NAME   = FastString -> ModuleName
    mkModuleNameFS (String -> FastString
    fsLit String
    "Prelude")
    mAIN_NAME :: ModuleName
    mAIN_NAME      = FastString -> ModuleName
    mkModuleNameFS (String -> FastString
    fsLit String
    "Main")

    mkPrimModule :: FastString -> Module
    mkPrimModule :: FastString -> Module
    mkPrimModule FastString
    m = Unit -> ModuleName -> Module
    forall u. u -> ModuleName -> GenModule u
    mkModule Unit
    primUnit (FastString -> ModuleName
    mkModuleNameFS FastString
    m)

    mkBignumModule :: FastString -> Module
    mkBignumModule :: FastString -> Module
    mkBignumModule FastString
    m = Unit -> ModuleName -> Module
    forall u. u -> ModuleName -> GenModule u
    mkModule Unit
    bignumUnit (FastString -> ModuleName
    mkModuleNameFS FastString
    m)

    mkGhcInternalModule :: FastString -> Module
    mkGhcInternalModule :: FastString -> Module
    mkGhcInternalModule FastString
    m = ModuleName -> Module
    mkGhcInternalModule_ (FastString -> ModuleName
    mkModuleNameFS FastString
    m)

    mkGhcInternalModule_ :: ModuleName -> Module
    mkGhcInternalModule_ :: ModuleName -> Module
    mkGhcInternalModule_ ModuleName
    m = Unit -> ModuleName -> Module
    forall u. u -> ModuleName -> GenModule u
    mkModule Unit
    ghcInternalUnit ModuleName
    m

    mkThisGhcModule :: FastString -> Module
    mkThisGhcModule :: FastString -> Module
    mkThisGhcModule FastString
    m = ModuleName -> Module
    mkThisGhcModule_ (FastString -> ModuleName
    mkModuleNameFS FastString
    m)

    mkThisGhcModule_ :: ModuleName -> Module
    mkThisGhcModule_ :: ModuleName -> Module
    mkThisGhcModule_ ModuleName
    m = Unit -> ModuleName -> Module
    forall u. u -> ModuleName -> GenModule u
    mkModule Unit
    thisGhcUnit ModuleName
    m

    mkMainModule :: FastString -> Module
    mkMainModule :: FastString -> Module
    mkMainModule FastString
    m = Unit -> ModuleName -> Module
    forall u. u -> ModuleName -> GenModule u
    mkModule Unit
    mainUnit (FastString -> ModuleName
    mkModuleNameFS FastString
    m)

    mkMainModule_ :: ModuleName -> Module
    mkMainModule_ :: ModuleName -> Module
    mkMainModule_ ModuleName
    m = Unit -> ModuleName -> Module
    forall u. u -> ModuleName -> GenModule u
    mkModule Unit
    mainUnit ModuleName
    m

    {-
    ************************************************************************
    *                                                                      *
                            RdrNames
    *                                                                      *
    ************************************************************************
    -}

    main_RDR_Unqual    :: RdrName
    main_RDR_Unqual :: RdrName
    main_RDR_Unqual = NameSpace -> FastString -> RdrName
    mkUnqual NameSpace
    varName (String -> FastString
    fsLit String
    "main")
            -- We definitely don't want an Orig RdrName, because
            -- main might, in principle, be imported into module Main

    eq_RDR, ge_RDR, le_RDR, lt_RDR, gt_RDR, compare_RDR,
        ltTag_RDR, eqTag_RDR, gtTag_RDR :: RdrName
    eq_RDR :: RdrName
    eq_RDR                  = Name -> RdrName
    nameRdrName Name
    eqName
    ge_RDR :: RdrName
    ge_RDR                  = Name -> RdrName
    nameRdrName Name
    geName
    le_RDR :: RdrName
    le_RDR                  = Module -> FastString -> RdrName
    varQual_RDR  Module
    gHC_CLASSES (String -> FastString
    fsLit String
    "<=")
    lt_RDR :: RdrName
    lt_RDR                  = Module -> FastString -> RdrName
    varQual_RDR  Module
    gHC_CLASSES (String -> FastString
    fsLit String
    "<")
    gt_RDR :: RdrName
    gt_RDR                  = Module -> FastString -> RdrName
    varQual_RDR  Module
    gHC_CLASSES (String -> FastString
    fsLit String
    ">")
    compare_RDR :: RdrName
    compare_RDR             = Module -> FastString -> RdrName
    varQual_RDR  Module
    gHC_CLASSES (String -> FastString
    fsLit String
    "compare")
    ltTag_RDR :: RdrName
    ltTag_RDR               = Name -> RdrName
    nameRdrName  Name
    ordLTDataConName
    eqTag_RDR :: RdrName
    eqTag_RDR               = Name -> RdrName
    nameRdrName  Name
    ordEQDataConName
    gtTag_RDR :: RdrName
    gtTag_RDR               = Name -> RdrName
    nameRdrName  Name
    ordGTDataConName

    map_RDR, append_RDR :: RdrName
    map_RDR :: RdrName
    map_RDR                 = Name -> RdrName
    nameRdrName Name
    mapName
    append_RDR :: RdrName
    append_RDR              = Name -> RdrName
    nameRdrName Name
    appendName

    foldr_RDR, build_RDR, returnM_RDR, bindM_RDR, failM_RDR
        :: RdrName
    foldr_RDR :: RdrName
    foldr_RDR               = Name -> RdrName
    nameRdrName Name
    foldrName
    build_RDR :: RdrName
    build_RDR               = Name -> RdrName
    nameRdrName Name
    buildName
    returnM_RDR :: RdrName
    returnM_RDR             = Name -> RdrName
    nameRdrName Name
    returnMName
    bindM_RDR :: RdrName
    bindM_RDR               = Name -> RdrName
    nameRdrName Name
    bindMName
    failM_RDR :: RdrName
    failM_RDR               = Name -> RdrName
    nameRdrName Name
    failMName

    left_RDR, right_RDR :: RdrName
    left_RDR :: RdrName
    left_RDR                = Name -> RdrName
    nameRdrName Name
    leftDataConName
    right_RDR :: RdrName
    right_RDR               = Name -> RdrName
    nameRdrName Name
    rightDataConName

    fromEnum_RDR, toEnum_RDR, toEnumError_RDR, succError_RDR, predError_RDR, enumIntToWord_RDR :: RdrName
    fromEnum_RDR :: RdrName
    fromEnum_RDR            = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_ENUM (String -> FastString
    fsLit String
    "fromEnum")
    toEnum_RDR :: RdrName
    toEnum_RDR              = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_ENUM (String -> FastString
    fsLit String
    "toEnum")
    toEnumError_RDR :: RdrName
    toEnumError_RDR         = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_ENUM (String -> FastString
    fsLit String
    "toEnumError")
    succError_RDR :: RdrName
    succError_RDR           = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_ENUM (String -> FastString
    fsLit String
    "succError")
    predError_RDR :: RdrName
    predError_RDR           = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_ENUM (String -> FastString
    fsLit String
    "predError")
    enumIntToWord_RDR :: RdrName
    enumIntToWord_RDR       = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_ENUM (String -> FastString
    fsLit String
    "enumIntToWord")

    enumFrom_RDR, enumFromTo_RDR, enumFromThen_RDR, enumFromThenTo_RDR :: RdrName
    enumFrom_RDR :: RdrName
    enumFrom_RDR            = Name -> RdrName
    nameRdrName Name
    enumFromName
    enumFromTo_RDR :: RdrName
    enumFromTo_RDR          = Name -> RdrName
    nameRdrName Name
    enumFromToName
    enumFromThen_RDR :: RdrName
    enumFromThen_RDR        = Name -> RdrName
    nameRdrName Name
    enumFromThenName
    enumFromThenTo_RDR :: RdrName
    enumFromThenTo_RDR      = Name -> RdrName
    nameRdrName Name
    enumFromThenToName

    times_RDR, plus_RDR :: RdrName
    times_RDR :: RdrName
    times_RDR               = Module -> FastString -> RdrName
    varQual_RDR  Module
    gHC_INTERNAL_NUM (String -> FastString
    fsLit String
    "*")
    plus_RDR :: RdrName
    plus_RDR                = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_NUM (String -> FastString
    fsLit String
    "+")

    compose_RDR :: RdrName
    compose_RDR :: RdrName
    compose_RDR             = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_BASE (String -> FastString
    fsLit String
    ".")

    not_RDR, dataToTag_RDR, succ_RDR, pred_RDR, minBound_RDR, maxBound_RDR,
        and_RDR, range_RDR, inRange_RDR, index_RDR,
        unsafeIndex_RDR, unsafeRangeSize_RDR :: RdrName
    and_RDR :: RdrName
    and_RDR                 = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_CLASSES (String -> FastString
    fsLit String
    "&&")
    not_RDR :: RdrName
    not_RDR                 = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_CLASSES (String -> FastString
    fsLit String
    "not")
    dataToTag_RDR :: RdrName
    dataToTag_RDR           = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_MAGIC (String -> FastString
    fsLit String
    "dataToTag#")
    succ_RDR :: RdrName
    succ_RDR                = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_ENUM (String -> FastString
    fsLit String
    "succ")
    pred_RDR :: RdrName
    pred_RDR                = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_ENUM (String -> FastString
    fsLit String
    "pred")
    minBound_RDR :: RdrName
    minBound_RDR            = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_ENUM (String -> FastString
    fsLit String
    "minBound")
    maxBound_RDR :: RdrName
    maxBound_RDR            = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_ENUM (String -> FastString
    fsLit String
    "maxBound")
    range_RDR :: RdrName
    range_RDR               = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_IX (String -> FastString
    fsLit String
    "range")
    inRange_RDR :: RdrName
    inRange_RDR             = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_IX (String -> FastString
    fsLit String
    "inRange")
    index_RDR :: RdrName
    index_RDR               = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_IX (String -> FastString
    fsLit String
    "index")
    unsafeIndex_RDR :: RdrName
    unsafeIndex_RDR         = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_IX (String -> FastString
    fsLit String
    "unsafeIndex")
    unsafeRangeSize_RDR :: RdrName
    unsafeRangeSize_RDR     = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_IX (String -> FastString
    fsLit String
    "unsafeRangeSize")

    readList_RDR, readListDefault_RDR, readListPrec_RDR, readListPrecDefault_RDR,
        readPrec_RDR, parens_RDR, choose_RDR, lexP_RDR, expectP_RDR :: RdrName
    readList_RDR :: RdrName
    readList_RDR            = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_READ (String -> FastString
    fsLit String
    "readList")
    readListDefault_RDR :: RdrName
    readListDefault_RDR     = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_READ (String -> FastString
    fsLit String
    "readListDefault")
    readListPrec_RDR :: RdrName
    readListPrec_RDR        = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_READ (String -> FastString
    fsLit String
    "readListPrec")
    readListPrecDefault_RDR :: RdrName
    readListPrecDefault_RDR = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_READ (String -> FastString
    fsLit String
    "readListPrecDefault")
    readPrec_RDR :: RdrName
    readPrec_RDR            = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_READ (String -> FastString
    fsLit String
    "readPrec")
    parens_RDR :: RdrName
    parens_RDR              = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_READ (String -> FastString
    fsLit String
    "parens")
    choose_RDR :: RdrName
    choose_RDR              = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_READ (String -> FastString
    fsLit String
    "choose")
    lexP_RDR :: RdrName
    lexP_RDR                = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_READ (String -> FastString
    fsLit String
    "lexP")
    expectP_RDR :: RdrName
    expectP_RDR             = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_READ (String -> FastString
    fsLit String
    "expectP")

    readField_RDR, readFieldHash_RDR, readSymField_RDR :: RdrName
    readField_RDR :: RdrName
    readField_RDR           = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_READ (String -> FastString
    fsLit String
    "readField")
    readFieldHash_RDR :: RdrName
    readFieldHash_RDR       = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_READ (String -> FastString
    fsLit String
    "readFieldHash")
    readSymField_RDR :: RdrName
    readSymField_RDR        = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_READ (String -> FastString
    fsLit String
    "readSymField")

    punc_RDR, ident_RDR, symbol_RDR :: RdrName
    punc_RDR :: RdrName
    punc_RDR                = Module -> FastString -> RdrName
    dataQual_RDR Module
    gHC_INTERNAL_LEX (String -> FastString
    fsLit String
    "Punc")
    ident_RDR :: RdrName
    ident_RDR               = Module -> FastString -> RdrName
    dataQual_RDR Module
    gHC_INTERNAL_LEX (String -> FastString
    fsLit String
    "Ident")
    symbol_RDR :: RdrName
    symbol_RDR              = Module -> FastString -> RdrName
    dataQual_RDR Module
    gHC_INTERNAL_LEX (String -> FastString
    fsLit String
    "Symbol")

    step_RDR, alt_RDR, reset_RDR, prec_RDR, pfail_RDR :: RdrName
    step_RDR :: RdrName
    step_RDR                = Module -> FastString -> RdrName
    varQual_RDR  Module
    gHC_INTERNAL_READ_PREC (String -> FastString
    fsLit String
    "step")
    alt_RDR :: RdrName
    alt_RDR                 = Module -> FastString -> RdrName
    varQual_RDR  Module
    gHC_INTERNAL_READ_PREC (String -> FastString
    fsLit String
    "+++")
    reset_RDR :: RdrName
    reset_RDR               = Module -> FastString -> RdrName
    varQual_RDR  Module
    gHC_INTERNAL_READ_PREC (String -> FastString
    fsLit String
    "reset")
    prec_RDR :: RdrName
    prec_RDR                = Module -> FastString -> RdrName
    varQual_RDR  Module
    gHC_INTERNAL_READ_PREC (String -> FastString
    fsLit String
    "prec")
    pfail_RDR :: RdrName
    pfail_RDR               = Module -> FastString -> RdrName
    varQual_RDR  Module
    gHC_INTERNAL_READ_PREC (String -> FastString
    fsLit String
    "pfail")

    showsPrec_RDR, shows_RDR, showString_RDR,
        showSpace_RDR, showCommaSpace_RDR, showParen_RDR :: RdrName
    showsPrec_RDR :: RdrName
    showsPrec_RDR           = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_SHOW (String -> FastString
    fsLit String
    "showsPrec")
    shows_RDR :: RdrName
    shows_RDR               = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_SHOW (String -> FastString
    fsLit String
    "shows")
    showString_RDR :: RdrName
    showString_RDR          = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_SHOW (String -> FastString
    fsLit String
    "showString")
    showSpace_RDR :: RdrName
    showSpace_RDR           = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_SHOW (String -> FastString
    fsLit String
    "showSpace")
    showCommaSpace_RDR :: RdrName
    showCommaSpace_RDR      = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_SHOW (String -> FastString
    fsLit String
    "showCommaSpace")
    showParen_RDR :: RdrName
    showParen_RDR           = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_SHOW (String -> FastString
    fsLit String
    "showParen")

    error_RDR :: RdrName
    error_RDR :: RdrName
    error_RDR = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_ERR (String -> FastString
    fsLit String
    "error")

    -- Generics (constructors and functions)
    u1DataCon_RDR, par1DataCon_RDR, rec1DataCon_RDR,
      k1DataCon_RDR, m1DataCon_RDR, l1DataCon_RDR, r1DataCon_RDR,
      prodDataCon_RDR, comp1DataCon_RDR,
      unPar1_RDR, unRec1_RDR, unK1_RDR, unComp1_RDR,
      from_RDR, from1_RDR, to_RDR, to1_RDR,
      datatypeName_RDR, moduleName_RDR, packageName_RDR, isNewtypeName_RDR,
      conName_RDR, conFixity_RDR, conIsRecord_RDR, selName_RDR,
      prefixDataCon_RDR, infixDataCon_RDR, leftAssocDataCon_RDR,
      rightAssocDataCon_RDR, notAssocDataCon_RDR,
      uAddrDataCon_RDR, uCharDataCon_RDR, uDoubleDataCon_RDR,
      uFloatDataCon_RDR, uIntDataCon_RDR, uWordDataCon_RDR,
      uAddrHash_RDR, uCharHash_RDR, uDoubleHash_RDR,
      uFloatHash_RDR, uIntHash_RDR, uWordHash_RDR :: RdrName

    u1DataCon_RDR :: RdrName
    u1DataCon_RDR    = Module -> FastString -> RdrName
    dataQual_RDR Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "U1")
    par1DataCon_RDR :: RdrName
    par1DataCon_RDR  = Module -> FastString -> RdrName
    dataQual_RDR Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "Par1")
    rec1DataCon_RDR :: RdrName
    rec1DataCon_RDR  = Module -> FastString -> RdrName
    dataQual_RDR Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "Rec1")
    k1DataCon_RDR :: RdrName
    k1DataCon_RDR    = Module -> FastString -> RdrName
    dataQual_RDR Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "K1")
    m1DataCon_RDR :: RdrName
    m1DataCon_RDR    = Module -> FastString -> RdrName
    dataQual_RDR Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "M1")

    l1DataCon_RDR :: RdrName
    l1DataCon_RDR     = Module -> FastString -> RdrName
    dataQual_RDR Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "L1")
    r1DataCon_RDR :: RdrName
    r1DataCon_RDR     = Module -> FastString -> RdrName
    dataQual_RDR Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "R1")

    prodDataCon_RDR :: RdrName
    prodDataCon_RDR   = Module -> FastString -> RdrName
    dataQual_RDR Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    ":*:")
    comp1DataCon_RDR :: RdrName
    comp1DataCon_RDR  = Module -> FastString -> RdrName
    dataQual_RDR Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "Comp1")

    unPar1_RDR :: RdrName
    unPar1_RDR  = Module -> FastString -> FastString -> RdrName
    fieldQual_RDR Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "Par1")  (String -> FastString
    fsLit String
    "unPar1")
    unRec1_RDR :: RdrName
    unRec1_RDR  = Module -> FastString -> FastString -> RdrName
    fieldQual_RDR Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "Rec1")  (String -> FastString
    fsLit String
    "unRec1")
    unK1_RDR :: RdrName
    unK1_RDR    = Module -> FastString -> FastString -> RdrName
    fieldQual_RDR Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "K1")    (String -> FastString
    fsLit String
    "unK1")
    unComp1_RDR :: RdrName
    unComp1_RDR = Module -> FastString -> FastString -> RdrName
    fieldQual_RDR Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "Comp1") (String -> FastString
    fsLit String
    "unComp1")

    from_RDR :: RdrName
    from_RDR  = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "from")
    from1_RDR :: RdrName
    from1_RDR = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "from1")
    to_RDR :: RdrName
    to_RDR    = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "to")
    to1_RDR :: RdrName
    to1_RDR   = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "to1")

    datatypeName_RDR :: RdrName
    datatypeName_RDR  = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "datatypeName")
    moduleName_RDR :: RdrName
    moduleName_RDR    = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "moduleName")
    packageName_RDR :: RdrName
    packageName_RDR   = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "packageName")
    isNewtypeName_RDR :: RdrName
    isNewtypeName_RDR = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "isNewtype")
    selName_RDR :: RdrName
    selName_RDR       = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "selName")
    conName_RDR :: RdrName
    conName_RDR       = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "conName")
    conFixity_RDR :: RdrName
    conFixity_RDR     = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "conFixity")
    conIsRecord_RDR :: RdrName
    conIsRecord_RDR   = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "conIsRecord")

    prefixDataCon_RDR :: RdrName
    prefixDataCon_RDR     = Module -> FastString -> RdrName
    dataQual_RDR Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "Prefix")
    infixDataCon_RDR :: RdrName
    infixDataCon_RDR      = Module -> FastString -> RdrName
    dataQual_RDR Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "Infix")
    leftAssocDataCon_RDR :: RdrName
    leftAssocDataCon_RDR  = Name -> RdrName
    nameRdrName Name
    leftAssociativeDataConName
    rightAssocDataCon_RDR :: RdrName
    rightAssocDataCon_RDR = Name -> RdrName
    nameRdrName Name
    rightAssociativeDataConName
    notAssocDataCon_RDR :: RdrName
    notAssocDataCon_RDR   = Name -> RdrName
    nameRdrName Name
    notAssociativeDataConName

    uAddrDataCon_RDR :: RdrName
    uAddrDataCon_RDR   = Module -> FastString -> RdrName
    dataQual_RDR Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "UAddr")
    uCharDataCon_RDR :: RdrName
    uCharDataCon_RDR   = Module -> FastString -> RdrName
    dataQual_RDR Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "UChar")
    uDoubleDataCon_RDR :: RdrName
    uDoubleDataCon_RDR = Module -> FastString -> RdrName
    dataQual_RDR Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "UDouble")
    uFloatDataCon_RDR :: RdrName
    uFloatDataCon_RDR  = Module -> FastString -> RdrName
    dataQual_RDR Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "UFloat")
    uIntDataCon_RDR :: RdrName
    uIntDataCon_RDR    = Module -> FastString -> RdrName
    dataQual_RDR Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "UInt")
    uWordDataCon_RDR :: RdrName
    uWordDataCon_RDR   = Module -> FastString -> RdrName
    dataQual_RDR Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "UWord")

    uAddrHash_RDR :: RdrName
    uAddrHash_RDR   = Module -> FastString -> FastString -> RdrName
    fieldQual_RDR Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "UAddr")   (String -> FastString
    fsLit String
    "uAddr#")
    uCharHash_RDR :: RdrName
    uCharHash_RDR   = Module -> FastString -> FastString -> RdrName
    fieldQual_RDR Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "UChar")   (String -> FastString
    fsLit String
    "uChar#")
    uDoubleHash_RDR :: RdrName
    uDoubleHash_RDR = Module -> FastString -> FastString -> RdrName
    fieldQual_RDR Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "UDouble") (String -> FastString
    fsLit String
    "uDouble#")
    uFloatHash_RDR :: RdrName
    uFloatHash_RDR  = Module -> FastString -> FastString -> RdrName
    fieldQual_RDR Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "UFloat")  (String -> FastString
    fsLit String
    "uFloat#")
    uIntHash_RDR :: RdrName
    uIntHash_RDR    = Module -> FastString -> FastString -> RdrName
    fieldQual_RDR Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "UInt")    (String -> FastString
    fsLit String
    "uInt#")
    uWordHash_RDR :: RdrName
    uWordHash_RDR   = Module -> FastString -> FastString -> RdrName
    fieldQual_RDR Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "UWord")   (String -> FastString
    fsLit String
    "uWord#")

    fmap_RDR, replace_RDR, pure_RDR, ap_RDR, liftA2_RDR, foldable_foldr_RDR,
        foldMap_RDR, null_RDR, all_RDR, traverse_RDR, mempty_RDR,
        mappend_RDR :: RdrName
    fmap_RDR :: RdrName
    fmap_RDR                = Name -> RdrName
    nameRdrName Name
    fmapName
    replace_RDR :: RdrName
    replace_RDR             = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_BASE (String -> FastString
    fsLit String
    "<$")
    pure_RDR :: RdrName
    pure_RDR                = Name -> RdrName
    nameRdrName Name
    pureAName
    ap_RDR :: RdrName
    ap_RDR                  = Name -> RdrName
    nameRdrName Name
    apAName
    liftA2_RDR :: RdrName
    liftA2_RDR              = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_BASE (String -> FastString
    fsLit String
    "liftA2")
    foldable_foldr_RDR :: RdrName
    foldable_foldr_RDR      = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_DATA_FOLDABLE       (String -> FastString
    fsLit String
    "foldr")
    foldMap_RDR :: RdrName
    foldMap_RDR             = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_DATA_FOLDABLE       (String -> FastString
    fsLit String
    "foldMap")
    null_RDR :: RdrName
    null_RDR                = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_DATA_FOLDABLE       (String -> FastString
    fsLit String
    "null")
    all_RDR :: RdrName
    all_RDR                 = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_DATA_FOLDABLE       (String -> FastString
    fsLit String
    "all")
    traverse_RDR :: RdrName
    traverse_RDR            = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_INTERNAL_DATA_TRAVERSABLE    (String -> FastString
    fsLit String
    "traverse")
    mempty_RDR :: RdrName
    mempty_RDR              = Name -> RdrName
    nameRdrName Name
    memptyName
    mappend_RDR :: RdrName
    mappend_RDR             = Name -> RdrName
    nameRdrName Name
    mappendName

    ----------------------
    varQual_RDR, tcQual_RDR, clsQual_RDR, dataQual_RDR
        :: Module -> FastString -> RdrName
    varQual_RDR :: Module -> FastString -> RdrName
    varQual_RDR  Module
    mod FastString
    str = Module -> OccName -> RdrName
    mkOrig Module
    mod (NameSpace -> FastString -> OccName
    mkOccNameFS NameSpace
    varName FastString
    str)
    tcQual_RDR :: Module -> FastString -> RdrName
    tcQual_RDR   Module
    mod FastString
    str = Module -> OccName -> RdrName
    mkOrig Module
    mod (NameSpace -> FastString -> OccName
    mkOccNameFS NameSpace
    tcName FastString
    str)
    clsQual_RDR :: Module -> FastString -> RdrName
    clsQual_RDR  Module
    mod FastString
    str = Module -> OccName -> RdrName
    mkOrig Module
    mod (NameSpace -> FastString -> OccName
    mkOccNameFS NameSpace
    clsName FastString
    str)
    dataQual_RDR :: Module -> FastString -> RdrName
    dataQual_RDR Module
    mod FastString
    str = Module -> OccName -> RdrName
    mkOrig Module
    mod (NameSpace -> FastString -> OccName
    mkOccNameFS NameSpace
    dataName FastString
    str)

    fieldQual_RDR :: Module -> FastString -> FastString -> RdrName
    fieldQual_RDR :: Module -> FastString -> FastString -> RdrName
    fieldQual_RDR Module
    mod FastString
    con FastString
    str = Module -> OccName -> RdrName
    mkOrig Module
    mod (NameSpace -> FastString -> OccName
    mkOccNameFS (FastString -> NameSpace
    fieldName FastString
    con) FastString
    str)

    {-
    ************************************************************************
    *                                                                      *
    \subsection{Known-key names}
    *                                                                      *
    ************************************************************************

    Many of these Names are not really "built in", but some parts of the
    compiler (notably the deriving mechanism) need to mention their names,
    and it's convenient to write them all down in one place.
    -}

    wildCardName :: Name
    wildCardName :: Name
    wildCardName = Unique -> FastString -> Name
    mkSystemVarName Unique
    wildCardKey (String -> FastString
    fsLit String
    "wild")

    runMainIOName, runRWName :: Name
    runMainIOName :: Name
    runMainIOName = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_TOP_HANDLER (String -> FastString
    fsLit String
    "runMainIO") Unique
    runMainKey
    runRWName :: Name
    runRWName     = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_MAGIC       (String -> FastString
    fsLit String
    "runRW#")    Unique
    runRWKey

    orderingTyConName, ordLTDataConName, ordEQDataConName, ordGTDataConName :: Name
    orderingTyConName :: Name
    orderingTyConName = Module -> FastString -> Unique -> Name
    tcQual  Module
    gHC_TYPES (String -> FastString
    fsLit String
    "Ordering") Unique
    orderingTyConKey
    ordLTDataConName :: Name
    ordLTDataConName     = Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_TYPES (String -> FastString
    fsLit String
    "LT") Unique
    ordLTDataConKey
    ordEQDataConName :: Name
    ordEQDataConName     = Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_TYPES (String -> FastString
    fsLit String
    "EQ") Unique
    ordEQDataConKey
    ordGTDataConName :: Name
    ordGTDataConName     = Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_TYPES (String -> FastString
    fsLit String
    "GT") Unique
    ordGTDataConKey

    specTyConName :: Name
    specTyConName :: Name
    specTyConName     = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_TYPES (String -> FastString
    fsLit String
    "SPEC") Unique
    specTyConKey

    eitherTyConName, leftDataConName, rightDataConName :: Name
    eitherTyConName :: Name
    eitherTyConName   = Module -> FastString -> Unique -> Name
    tcQual  Module
    gHC_INTERNAL_DATA_EITHER (String -> FastString
    fsLit String
    "Either") Unique
    eitherTyConKey
    leftDataConName :: Name
    leftDataConName   = Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_INTERNAL_DATA_EITHER (String -> FastString
    fsLit String
    "Left")   Unique
    leftDataConKey
    rightDataConName :: Name
    rightDataConName  = Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_INTERNAL_DATA_EITHER (String -> FastString
    fsLit String
    "Right")  Unique
    rightDataConKey

    voidTyConName :: Name
    voidTyConName :: Name
    voidTyConName = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_INTERNAL_BASE (String -> FastString
    fsLit String
    "Void") Unique
    voidTyConKey

    -- Generics (types)
    v1TyConName, u1TyConName, par1TyConName, rec1TyConName,
      k1TyConName, m1TyConName, sumTyConName, prodTyConName,
      compTyConName, rTyConName, dTyConName,
      cTyConName, sTyConName, rec0TyConName,
      d1TyConName, c1TyConName, s1TyConName,
      repTyConName, rep1TyConName, uRecTyConName,
      uAddrTyConName, uCharTyConName, uDoubleTyConName,
      uFloatTyConName, uIntTyConName, uWordTyConName,
      prefixIDataConName, infixIDataConName, leftAssociativeDataConName,
      rightAssociativeDataConName, notAssociativeDataConName,
      sourceUnpackDataConName, sourceNoUnpackDataConName,
      noSourceUnpackednessDataConName, sourceLazyDataConName,
      sourceStrictDataConName, noSourceStrictnessDataConName,
      decidedLazyDataConName, decidedStrictDataConName, decidedUnpackDataConName,
      metaDataDataConName, metaConsDataConName, metaSelDataConName :: Name

    v1TyConName :: Name
    v1TyConName  = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "V1") Unique
    v1TyConKey
    u1TyConName :: Name
    u1TyConName  = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "U1") Unique
    u1TyConKey
    par1TyConName :: Name
    par1TyConName  = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "Par1") Unique
    par1TyConKey
    rec1TyConName :: Name
    rec1TyConName  = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "Rec1") Unique
    rec1TyConKey
    k1TyConName :: Name
    k1TyConName  = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "K1") Unique
    k1TyConKey
    m1TyConName :: Name
    m1TyConName  = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "M1") Unique
    m1TyConKey

    sumTyConName :: Name
    sumTyConName    = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    ":+:") Unique
    sumTyConKey
    prodTyConName :: Name
    prodTyConName   = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    ":*:") Unique
    prodTyConKey
    compTyConName :: Name
    compTyConName   = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    ":.:") Unique
    compTyConKey

    rTyConName :: Name
    rTyConName  = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "R") Unique
    rTyConKey
    dTyConName :: Name
    dTyConName  = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "D") Unique
    dTyConKey
    cTyConName :: Name
    cTyConName  = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "C") Unique
    cTyConKey
    sTyConName :: Name
    sTyConName  = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "S") Unique
    sTyConKey

    rec0TyConName :: Name
    rec0TyConName  = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "Rec0") Unique
    rec0TyConKey
    d1TyConName :: Name
    d1TyConName  = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "D1") Unique
    d1TyConKey
    c1TyConName :: Name
    c1TyConName  = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "C1") Unique
    c1TyConKey
    s1TyConName :: Name
    s1TyConName  = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "S1") Unique
    s1TyConKey

    repTyConName :: Name
    repTyConName  = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "Rep")  Unique
    repTyConKey
    rep1TyConName :: Name
    rep1TyConName = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "Rep1") Unique
    rep1TyConKey

    uRecTyConName :: Name
    uRecTyConName      = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "URec") Unique
    uRecTyConKey
    uAddrTyConName :: Name
    uAddrTyConName     = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "UAddr") Unique
    uAddrTyConKey
    uCharTyConName :: Name
    uCharTyConName     = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "UChar") Unique
    uCharTyConKey
    uDoubleTyConName :: Name
    uDoubleTyConName   = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "UDouble") Unique
    uDoubleTyConKey
    uFloatTyConName :: Name
    uFloatTyConName    = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "UFloat") Unique
    uFloatTyConKey
    uIntTyConName :: Name
    uIntTyConName      = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "UInt") Unique
    uIntTyConKey
    uWordTyConName :: Name
    uWordTyConName     = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "UWord") Unique
    uWordTyConKey

    prefixIDataConName :: Name
    prefixIDataConName = Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "PrefixI")  Unique
    prefixIDataConKey
    infixIDataConName :: Name
    infixIDataConName  = Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "InfixI")   Unique
    infixIDataConKey
    leftAssociativeDataConName :: Name
    leftAssociativeDataConName  = Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "LeftAssociative")   Unique
    leftAssociativeDataConKey
    rightAssociativeDataConName :: Name
    rightAssociativeDataConName = Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "RightAssociative")  Unique
    rightAssociativeDataConKey
    notAssociativeDataConName :: Name
    notAssociativeDataConName   = Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "NotAssociative")    Unique
    notAssociativeDataConKey

    sourceUnpackDataConName :: Name
    sourceUnpackDataConName         = Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "SourceUnpack")         Unique
    sourceUnpackDataConKey
    sourceNoUnpackDataConName :: Name
    sourceNoUnpackDataConName       = Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "SourceNoUnpack")       Unique
    sourceNoUnpackDataConKey
    noSourceUnpackednessDataConName :: Name
    noSourceUnpackednessDataConName = Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "NoSourceUnpackedness") Unique
    noSourceUnpackednessDataConKey
    sourceLazyDataConName :: Name
    sourceLazyDataConName           = Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "SourceLazy")           Unique
    sourceLazyDataConKey
    sourceStrictDataConName :: Name
    sourceStrictDataConName         = Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "SourceStrict")         Unique
    sourceStrictDataConKey
    noSourceStrictnessDataConName :: Name
    noSourceStrictnessDataConName   = Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "NoSourceStrictness")   Unique
    noSourceStrictnessDataConKey
    decidedLazyDataConName :: Name
    decidedLazyDataConName          = Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "DecidedLazy")          Unique
    decidedLazyDataConKey
    decidedStrictDataConName :: Name
    decidedStrictDataConName        = Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "DecidedStrict")        Unique
    decidedStrictDataConKey
    decidedUnpackDataConName :: Name
    decidedUnpackDataConName        = Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "DecidedUnpack")        Unique
    decidedUnpackDataConKey

    metaDataDataConName :: Name
    metaDataDataConName  = Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "MetaData")  Unique
    metaDataDataConKey
    metaConsDataConName :: Name
    metaConsDataConName  = Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "MetaCons")  Unique
    metaConsDataConKey
    metaSelDataConName :: Name
    metaSelDataConName   = Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "MetaSel")   Unique
    metaSelDataConKey

    -- Primitive Int
    divIntName, modIntName :: Name
    divIntName :: Name
    divIntName = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_CLASSES (String -> FastString
    fsLit String
    "divInt#") Unique
    divIntIdKey
    modIntName :: Name
    modIntName = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_CLASSES (String -> FastString
    fsLit String
    "modInt#") Unique
    modIntIdKey

    -- Base strings Strings
    unpackCStringName, unpackCStringFoldrName,
        unpackCStringUtf8Name, unpackCStringFoldrUtf8Name,
        unpackCStringAppendName, unpackCStringAppendUtf8Name,
        eqStringName, cstringLengthName :: Name
    cstringLengthName :: Name
    cstringLengthName       = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_CSTRING (String -> FastString
    fsLit String
    "cstringLength#") Unique
    cstringLengthIdKey
    eqStringName :: Name
    eqStringName            = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_BASE (String -> FastString
    fsLit String
    "eqString")  Unique
    eqStringIdKey

    unpackCStringName :: Name
    unpackCStringName       = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_CSTRING (String -> FastString
    fsLit String
    "unpackCString#") Unique
    unpackCStringIdKey
    unpackCStringAppendName :: Name
    unpackCStringAppendName = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_CSTRING (String -> FastString
    fsLit String
    "unpackAppendCString#") Unique
    unpackCStringAppendIdKey
    unpackCStringFoldrName :: Name
    unpackCStringFoldrName  = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_CSTRING (String -> FastString
    fsLit String
    "unpackFoldrCString#") Unique
    unpackCStringFoldrIdKey

    unpackCStringUtf8Name :: Name
    unpackCStringUtf8Name       = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_CSTRING (String -> FastString
    fsLit String
    "unpackCStringUtf8#") Unique
    unpackCStringUtf8IdKey
    unpackCStringAppendUtf8Name :: Name
    unpackCStringAppendUtf8Name = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_CSTRING (String -> FastString
    fsLit String
    "unpackAppendCStringUtf8#") Unique
    unpackCStringAppendUtf8IdKey
    unpackCStringFoldrUtf8Name :: Name
    unpackCStringFoldrUtf8Name  = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_CSTRING (String -> FastString
    fsLit String
    "unpackFoldrCStringUtf8#") Unique
    unpackCStringFoldrUtf8IdKey

    -- The 'inline' function
    inlineIdName :: Name
    inlineIdName :: Name
    inlineIdName            = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_MAGIC (String -> FastString
    fsLit String
    "inline") Unique
    inlineIdKey

    -- Base classes (Eq, Ord, Functor)
    fmapName, eqClassName, eqName, ordClassName, geName, functorClassName :: Name
    eqClassName :: Name
    eqClassName       = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_CLASSES (String -> FastString
    fsLit String
    "Eq")      Unique
    eqClassKey
    eqName :: Name
    eqName            = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_CLASSES (String -> FastString
    fsLit String
    "==")      Unique
    eqClassOpKey
    ordClassName :: Name
    ordClassName      = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_CLASSES (String -> FastString
    fsLit String
    "Ord")     Unique
    ordClassKey
    geName :: Name
    geName            = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_CLASSES (String -> FastString
    fsLit String
    ">=")      Unique
    geClassOpKey
    functorClassName :: Name
    functorClassName  = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_INTERNAL_BASE    (String -> FastString
    fsLit String
    "Functor") Unique
    functorClassKey
    fmapName :: Name
    fmapName          = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_BASE    (String -> FastString
    fsLit String
    "fmap")    Unique
    fmapClassOpKey

    -- Class Monad
    monadClassName, thenMName, bindMName, returnMName :: Name
    monadClassName :: Name
    monadClassName     = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_INTERNAL_BASE (String -> FastString
    fsLit String
    "Monad")  Unique
    monadClassKey
    thenMName :: Name
    thenMName          = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_BASE (String -> FastString
    fsLit String
    ">>")     Unique
    thenMClassOpKey
    bindMName :: Name
    bindMName          = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_BASE (String -> FastString
    fsLit String
    ">>=")    Unique
    bindMClassOpKey
    returnMName :: Name
    returnMName        = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_BASE (String -> FastString
    fsLit String
    "return") Unique
    returnMClassOpKey

    -- Class MonadFail
    monadFailClassName, failMName :: Name
    monadFailClassName :: Name
    monadFailClassName = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_INTERNAL_MONAD_FAIL (String -> FastString
    fsLit String
    "MonadFail") Unique
    monadFailClassKey
    failMName :: Name
    failMName          = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_MONAD_FAIL (String -> FastString
    fsLit String
    "fail")      Unique
    failMClassOpKey

    -- Class Applicative
    applicativeClassName, pureAName, apAName, thenAName :: Name
    applicativeClassName :: Name
    applicativeClassName = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_INTERNAL_BASE (String -> FastString
    fsLit String
    "Applicative") Unique
    applicativeClassKey
    apAName :: Name
    apAName              = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_BASE (String -> FastString
    fsLit String
    "<*>")         Unique
    apAClassOpKey
    pureAName :: Name
    pureAName            = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_BASE (String -> FastString
    fsLit String
    "pure")        Unique
    pureAClassOpKey
    thenAName :: Name
    thenAName            = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_BASE (String -> FastString
    fsLit String
    "*>")          Unique
    thenAClassOpKey

    -- Classes (Foldable, Traversable)
    foldableClassName, traversableClassName :: Name
    foldableClassName :: Name
    foldableClassName     = Module -> FastString -> Unique -> Name
    clsQual  Module
    gHC_INTERNAL_DATA_FOLDABLE       (String -> FastString
    fsLit String
    "Foldable")    Unique
    foldableClassKey
    traversableClassName :: Name
    traversableClassName  = Module -> FastString -> Unique -> Name
    clsQual  Module
    gHC_INTERNAL_DATA_TRAVERSABLE    (String -> FastString
    fsLit String
    "Traversable") Unique
    traversableClassKey

    -- Classes (Semigroup, Monoid)
    semigroupClassName, sappendName :: Name
    semigroupClassName :: Name
    semigroupClassName = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_INTERNAL_BASE       (String -> FastString
    fsLit String
    "Semigroup") Unique
    semigroupClassKey
    sappendName :: Name
    sappendName        = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_BASE       (String -> FastString
    fsLit String
    "<>")        Unique
    sappendClassOpKey
    monoidClassName, memptyName, mappendName, mconcatName :: Name
    monoidClassName :: Name
    monoidClassName    = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_INTERNAL_BASE       (String -> FastString
    fsLit String
    "Monoid")    Unique
    monoidClassKey
    memptyName :: Name
    memptyName         = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_BASE       (String -> FastString
    fsLit String
    "mempty")    Unique
    memptyClassOpKey
    mappendName :: Name
    mappendName        = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_BASE       (String -> FastString
    fsLit String
    "mappend")   Unique
    mappendClassOpKey
    mconcatName :: Name
    mconcatName        = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_BASE       (String -> FastString
    fsLit String
    "mconcat")   Unique
    mconcatClassOpKey

    -- AMP additions

    joinMName, alternativeClassName :: Name
    joinMName :: Name
    joinMName            = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_BASE (String -> FastString
    fsLit String
    "join")        Unique
    joinMIdKey
    alternativeClassName :: Name
    alternativeClassName = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_INTERNAL_MONAD (String -> FastString
    fsLit String
    "Alternative") Unique
    alternativeClassKey

    --
    joinMIdKey, apAClassOpKey, pureAClassOpKey, thenAClassOpKey,
        alternativeClassKey :: Unique
    joinMIdKey :: Unique
    joinMIdKey          = Int -> Unique
    mkPreludeMiscIdUnique Int
    750
    apAClassOpKey :: Unique
    apAClassOpKey       = Int -> Unique
    mkPreludeMiscIdUnique Int
    751 -- <*>
    pureAClassOpKey :: Unique
    pureAClassOpKey     = Int -> Unique
    mkPreludeMiscIdUnique Int
    752
    thenAClassOpKey :: Unique
    thenAClassOpKey     = Int -> Unique
    mkPreludeMiscIdUnique Int
    753
    alternativeClassKey :: Unique
    alternativeClassKey = Int -> Unique
    mkPreludeMiscIdUnique Int
    754

    -- Functions for GHC extensions
    considerAccessibleName :: Name
    considerAccessibleName :: Name
    considerAccessibleName = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_EXTS (String -> FastString
    fsLit String
    "considerAccessible") Unique
    considerAccessibleIdKey

    -- Random GHC.Internal.Base functions
    fromStringName, otherwiseIdName, foldrName, buildName, augmentName,
        mapName, appendName, assertName,
        dollarName :: Name
    dollarName :: Name
    dollarName        = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_BASE (String -> FastString
    fsLit String
    "$")          Unique
    dollarIdKey
    otherwiseIdName :: Name
    otherwiseIdName   = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_BASE (String -> FastString
    fsLit String
    "otherwise")  Unique
    otherwiseIdKey
    foldrName :: Name
    foldrName         = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_BASE (String -> FastString
    fsLit String
    "foldr")      Unique
    foldrIdKey
    buildName :: Name
    buildName         = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_BASE (String -> FastString
    fsLit String
    "build")      Unique
    buildIdKey
    augmentName :: Name
    augmentName       = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_BASE (String -> FastString
    fsLit String
    "augment")    Unique
    augmentIdKey
    mapName :: Name
    mapName           = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_BASE (String -> FastString
    fsLit String
    "map")        Unique
    mapIdKey
    appendName :: Name
    appendName        = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_BASE (String -> FastString
    fsLit String
    "++")         Unique
    appendIdKey
    assertName :: Name
    assertName        = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_BASE (String -> FastString
    fsLit String
    "assert")     Unique
    assertIdKey
    fromStringName :: Name
    fromStringName    = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_DATA_STRING (String -> FastString
    fsLit String
    "fromString") Unique
    fromStringClassOpKey

    -- Module GHC.Internal.Num
    numClassName, fromIntegerName, minusName, negateName :: Name
    numClassName :: Name
    numClassName      = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_INTERNAL_NUM (String -> FastString
    fsLit String
    "Num")         Unique
    numClassKey
    fromIntegerName :: Name
    fromIntegerName   = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_NUM (String -> FastString
    fsLit String
    "fromInteger") Unique
    fromIntegerClassOpKey
    minusName :: Name
    minusName         = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_NUM (String -> FastString
    fsLit String
    "-")           Unique
    minusClassOpKey
    negateName :: Name
    negateName        = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_NUM (String -> FastString
    fsLit String
    "negate")      Unique
    negateClassOpKey

    ---------------------------------
    -- ghc-bignum
    ---------------------------------
    integerFromNaturalName
       , integerToNaturalClampName
       , integerToNaturalThrowName
       , integerToNaturalName
       , integerToWordName
       , integerToIntName
       , integerToWord64Name
       , integerToInt64Name
       , integerFromWordName
       , integerFromWord64Name
       , integerFromInt64Name
       , integerAddName
       , integerMulName
       , integerSubName
       , integerNegateName
       , integerAbsName
       , integerPopCountName
       , integerQuotName
       , integerRemName
       , integerDivName
       , integerModName
       , integerDivModName
       , integerQuotRemName
       , integerEncodeFloatName
       , integerEncodeDoubleName
       , integerGcdName
       , integerLcmName
       , integerAndName
       , integerOrName
       , integerXorName
       , integerComplementName
       , integerBitName
       , integerTestBitName
       , integerShiftLName
       , integerShiftRName
       , naturalToWordName
       , naturalPopCountName
       , naturalShiftRName
       , naturalShiftLName
       , naturalAddName
       , naturalSubName
       , naturalSubThrowName
       , naturalSubUnsafeName
       , naturalMulName
       , naturalQuotRemName
       , naturalQuotName
       , naturalRemName
       , naturalAndName
       , naturalAndNotName
       , naturalOrName
       , naturalXorName
       , naturalTestBitName
       , naturalBitName
       , naturalGcdName
       , naturalLcmName
       , naturalLog2Name
       , naturalLogBaseWordName
       , naturalLogBaseName
       , naturalPowModName
       , naturalSizeInBaseName
       , bignatEqName
       , bignatCompareName
       , bignatCompareWordName
       :: Name

    bnbVarQual, bnnVarQual, bniVarQual :: String -> Unique -> Name
    bnbVarQual :: String -> Unique -> Name
    bnbVarQual String
    str Unique
    key = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_NUM_BIGNAT  (String -> FastString
    fsLit String
    str) Unique
    key
    bnnVarQual :: String -> Unique -> Name
    bnnVarQual String
    str Unique
    key = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_NUM_NATURAL (String -> FastString
    fsLit String
    str) Unique
    key
    bniVarQual :: String -> Unique -> Name
    bniVarQual String
    str Unique
    key = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_NUM_INTEGER (String -> FastString
    fsLit String
    str) Unique
    key

    -- Types and DataCons
    bignatEqName :: Name
    bignatEqName              = String -> Unique -> Name
    bnbVarQual String
    "bigNatEq#"                 Unique
    bignatEqIdKey
    bignatCompareName :: Name
    bignatCompareName         = String -> Unique -> Name
    bnbVarQual String
    "bigNatCompare"             Unique
    bignatCompareIdKey
    bignatCompareWordName :: Name
    bignatCompareWordName     = String -> Unique -> Name
    bnbVarQual String
    "bigNatCompareWord#"        Unique
    bignatCompareWordIdKey

    naturalToWordName :: Name
    naturalToWordName         = String -> Unique -> Name
    bnnVarQual String
    "naturalToWord#"            Unique
    naturalToWordIdKey
    naturalPopCountName :: Name
    naturalPopCountName       = String -> Unique -> Name
    bnnVarQual String
    "naturalPopCount#"          Unique
    naturalPopCountIdKey
    naturalShiftRName :: Name
    naturalShiftRName         = String -> Unique -> Name
    bnnVarQual String
    "naturalShiftR#"            Unique
    naturalShiftRIdKey
    naturalShiftLName :: Name
    naturalShiftLName         = String -> Unique -> Name
    bnnVarQual String
    "naturalShiftL#"            Unique
    naturalShiftLIdKey
    naturalAddName :: Name
    naturalAddName            = String -> Unique -> Name
    bnnVarQual String
    "naturalAdd"                Unique
    naturalAddIdKey
    naturalSubName :: Name
    naturalSubName            = String -> Unique -> Name
    bnnVarQual String
    "naturalSub"                Unique
    naturalSubIdKey
    naturalSubThrowName :: Name
    naturalSubThrowName       = String -> Unique -> Name
    bnnVarQual String
    "naturalSubThrow"           Unique
    naturalSubThrowIdKey
    naturalSubUnsafeName :: Name
    naturalSubUnsafeName      = String -> Unique -> Name
    bnnVarQual String
    "naturalSubUnsafe"          Unique
    naturalSubUnsafeIdKey
    naturalMulName :: Name
    naturalMulName            = String -> Unique -> Name
    bnnVarQual String
    "naturalMul"                Unique
    naturalMulIdKey
    naturalQuotRemName :: Name
    naturalQuotRemName        = String -> Unique -> Name
    bnnVarQual String
    "naturalQuotRem#"           Unique
    naturalQuotRemIdKey
    naturalQuotName :: Name
    naturalQuotName           = String -> Unique -> Name
    bnnVarQual String
    "naturalQuot"               Unique
    naturalQuotIdKey
    naturalRemName :: Name
    naturalRemName            = String -> Unique -> Name
    bnnVarQual String
    "naturalRem"                Unique
    naturalRemIdKey
    naturalAndName :: Name
    naturalAndName            = String -> Unique -> Name
    bnnVarQual String
    "naturalAnd"                Unique
    naturalAndIdKey
    naturalAndNotName :: Name
    naturalAndNotName         = String -> Unique -> Name
    bnnVarQual String
    "naturalAndNot"             Unique
    naturalAndNotIdKey
    naturalOrName :: Name
    naturalOrName             = String -> Unique -> Name
    bnnVarQual String
    "naturalOr"                 Unique
    naturalOrIdKey
    naturalXorName :: Name
    naturalXorName            = String -> Unique -> Name
    bnnVarQual String
    "naturalXor"                Unique
    naturalXorIdKey
    naturalTestBitName :: Name
    naturalTestBitName        = String -> Unique -> Name
    bnnVarQual String
    "naturalTestBit#"           Unique
    naturalTestBitIdKey
    naturalBitName :: Name
    naturalBitName            = String -> Unique -> Name
    bnnVarQual String
    "naturalBit#"               Unique
    naturalBitIdKey
    naturalGcdName :: Name
    naturalGcdName            = String -> Unique -> Name
    bnnVarQual String
    "naturalGcd"                Unique
    naturalGcdIdKey
    naturalLcmName :: Name
    naturalLcmName            = String -> Unique -> Name
    bnnVarQual String
    "naturalLcm"                Unique
    naturalLcmIdKey
    naturalLog2Name :: Name
    naturalLog2Name           = String -> Unique -> Name
    bnnVarQual String
    "naturalLog2#"              Unique
    naturalLog2IdKey
    naturalLogBaseWordName :: Name
    naturalLogBaseWordName    = String -> Unique -> Name
    bnnVarQual String
    "naturalLogBaseWord#"       Unique
    naturalLogBaseWordIdKey
    naturalLogBaseName :: Name
    naturalLogBaseName        = String -> Unique -> Name
    bnnVarQual String
    "naturalLogBase#"           Unique
    naturalLogBaseIdKey
    naturalPowModName :: Name
    naturalPowModName         = String -> Unique -> Name
    bnnVarQual String
    "naturalPowMod"             Unique
    naturalPowModIdKey
    naturalSizeInBaseName :: Name
    naturalSizeInBaseName     = String -> Unique -> Name
    bnnVarQual String
    "naturalSizeInBase#"        Unique
    naturalSizeInBaseIdKey

    integerFromNaturalName :: Name
    integerFromNaturalName    = String -> Unique -> Name
    bniVarQual String
    "integerFromNatural"        Unique
    integerFromNaturalIdKey
    integerToNaturalClampName :: Name
    integerToNaturalClampName = String -> Unique -> Name
    bniVarQual String
    "integerToNaturalClamp"     Unique
    integerToNaturalClampIdKey
    integerToNaturalThrowName :: Name
    integerToNaturalThrowName = String -> Unique -> Name
    bniVarQual String
    "integerToNaturalThrow"     Unique
    integerToNaturalThrowIdKey
    integerToNaturalName :: Name
    integerToNaturalName      = String -> Unique -> Name
    bniVarQual String
    "integerToNatural"          Unique
    integerToNaturalIdKey
    integerToWordName :: Name
    integerToWordName         = String -> Unique -> Name
    bniVarQual String
    "integerToWord#"            Unique
    integerToWordIdKey
    integerToIntName :: Name
    integerToIntName          = String -> Unique -> Name
    bniVarQual String
    "integerToInt#"             Unique
    integerToIntIdKey
    integerToWord64Name :: Name
    integerToWord64Name       = String -> Unique -> Name
    bniVarQual String
    "integerToWord64#"          Unique
    integerToWord64IdKey
    integerToInt64Name :: Name
    integerToInt64Name        = String -> Unique -> Name
    bniVarQual String
    "integerToInt64#"           Unique
    integerToInt64IdKey
    integerFromWordName :: Name
    integerFromWordName       = String -> Unique -> Name
    bniVarQual String
    "integerFromWord#"          Unique
    integerFromWordIdKey
    integerFromWord64Name :: Name
    integerFromWord64Name     = String -> Unique -> Name
    bniVarQual String
    "integerFromWord64#"        Unique
    integerFromWord64IdKey
    integerFromInt64Name :: Name
    integerFromInt64Name      = String -> Unique -> Name
    bniVarQual String
    "integerFromInt64#"         Unique
    integerFromInt64IdKey
    integerAddName :: Name
    integerAddName            = String -> Unique -> Name
    bniVarQual String
    "integerAdd"                Unique
    integerAddIdKey
    integerMulName :: Name
    integerMulName            = String -> Unique -> Name
    bniVarQual String
    "integerMul"                Unique
    integerMulIdKey
    integerSubName :: Name
    integerSubName            = String -> Unique -> Name
    bniVarQual String
    "integerSub"                Unique
    integerSubIdKey
    integerNegateName :: Name
    integerNegateName         = String -> Unique -> Name
    bniVarQual String
    "integerNegate"             Unique
    integerNegateIdKey
    integerAbsName :: Name
    integerAbsName            = String -> Unique -> Name
    bniVarQual String
    "integerAbs"                Unique
    integerAbsIdKey
    integerPopCountName :: Name
    integerPopCountName       = String -> Unique -> Name
    bniVarQual String
    "integerPopCount#"          Unique
    integerPopCountIdKey
    integerQuotName :: Name
    integerQuotName           = String -> Unique -> Name
    bniVarQual String
    "integerQuot"               Unique
    integerQuotIdKey
    integerRemName :: Name
    integerRemName            = String -> Unique -> Name
    bniVarQual String
    "integerRem"                Unique
    integerRemIdKey
    integerDivName :: Name
    integerDivName            = String -> Unique -> Name
    bniVarQual String
    "integerDiv"                Unique
    integerDivIdKey
    integerModName :: Name
    integerModName            = String -> Unique -> Name
    bniVarQual String
    "integerMod"                Unique
    integerModIdKey
    integerDivModName :: Name
    integerDivModName         = String -> Unique -> Name
    bniVarQual String
    "integerDivMod#"            Unique
    integerDivModIdKey
    integerQuotRemName :: Name
    integerQuotRemName        = String -> Unique -> Name
    bniVarQual String
    "integerQuotRem#"           Unique
    integerQuotRemIdKey
    integerEncodeFloatName :: Name
    integerEncodeFloatName    = String -> Unique -> Name
    bniVarQual String
    "integerEncodeFloat#"       Unique
    integerEncodeFloatIdKey
    integerEncodeDoubleName :: Name
    integerEncodeDoubleName   = String -> Unique -> Name
    bniVarQual String
    "integerEncodeDouble#"      Unique
    integerEncodeDoubleIdKey
    integerGcdName :: Name
    integerGcdName            = String -> Unique -> Name
    bniVarQual String
    "integerGcd"                Unique
    integerGcdIdKey
    integerLcmName :: Name
    integerLcmName            = String -> Unique -> Name
    bniVarQual String
    "integerLcm"                Unique
    integerLcmIdKey
    integerAndName :: Name
    integerAndName            = String -> Unique -> Name
    bniVarQual String
    "integerAnd"                Unique
    integerAndIdKey
    integerOrName :: Name
    integerOrName             = String -> Unique -> Name
    bniVarQual String
    "integerOr"                 Unique
    integerOrIdKey
    integerXorName :: Name
    integerXorName            = String -> Unique -> Name
    bniVarQual String
    "integerXor"                Unique
    integerXorIdKey
    integerComplementName :: Name
    integerComplementName     = String -> Unique -> Name
    bniVarQual String
    "integerComplement"         Unique
    integerComplementIdKey
    integerBitName :: Name
    integerBitName            = String -> Unique -> Name
    bniVarQual String
    "integerBit#"               Unique
    integerBitIdKey
    integerTestBitName :: Name
    integerTestBitName        = String -> Unique -> Name
    bniVarQual String
    "integerTestBit#"           Unique
    integerTestBitIdKey
    integerShiftLName :: Name
    integerShiftLName         = String -> Unique -> Name
    bniVarQual String
    "integerShiftL#"            Unique
    integerShiftLIdKey
    integerShiftRName :: Name
    integerShiftRName         = String -> Unique -> Name
    bniVarQual String
    "integerShiftR#"            Unique
    integerShiftRIdKey

    ---------------------------------
    -- End of ghc-bignum
    ---------------------------------

    -- GHC.Internal.Real types and classes
    rationalTyConName, ratioTyConName, ratioDataConName, realClassName,
        integralClassName, realFracClassName, fractionalClassName,
        fromRationalName, toIntegerName, toRationalName, fromIntegralName,
        realToFracName, mkRationalBase2Name, mkRationalBase10Name :: Name
    rationalTyConName :: Name
    rationalTyConName   = Module -> FastString -> Unique -> Name
    tcQual  Module
    gHC_INTERNAL_REAL (String -> FastString
    fsLit String
    "Rational")     Unique
    rationalTyConKey
    ratioTyConName :: Name
    ratioTyConName      = Module -> FastString -> Unique -> Name
    tcQual  Module
    gHC_INTERNAL_REAL (String -> FastString
    fsLit String
    "Ratio")        Unique
    ratioTyConKey
    ratioDataConName :: Name
    ratioDataConName    = Module -> FastString -> Unique -> Name
    dcQual  Module
    gHC_INTERNAL_REAL (String -> FastString
    fsLit String
    ":%")           Unique
    ratioDataConKey
    realClassName :: Name
    realClassName       = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_INTERNAL_REAL (String -> FastString
    fsLit String
    "Real")         Unique
    realClassKey
    integralClassName :: Name
    integralClassName   = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_INTERNAL_REAL (String -> FastString
    fsLit String
    "Integral")     Unique
    integralClassKey
    realFracClassName :: Name
    realFracClassName   = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_INTERNAL_REAL (String -> FastString
    fsLit String
    "RealFrac")     Unique
    realFracClassKey
    fractionalClassName :: Name
    fractionalClassName = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_INTERNAL_REAL (String -> FastString
    fsLit String
    "Fractional")   Unique
    fractionalClassKey
    fromRationalName :: Name
    fromRationalName    = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_REAL (String -> FastString
    fsLit String
    "fromRational") Unique
    fromRationalClassOpKey
    toIntegerName :: Name
    toIntegerName       = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_REAL (String -> FastString
    fsLit String
    "toInteger")    Unique
    toIntegerClassOpKey
    toRationalName :: Name
    toRationalName      = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_REAL (String -> FastString
    fsLit String
    "toRational")   Unique
    toRationalClassOpKey
    fromIntegralName :: Name
    fromIntegralName    = Module -> FastString -> Unique -> Name
    varQual  Module
    gHC_INTERNAL_REAL (String -> FastString
    fsLit String
    "fromIntegral")Unique
    fromIntegralIdKey
    realToFracName :: Name
    realToFracName      = Module -> FastString -> Unique -> Name
    varQual  Module
    gHC_INTERNAL_REAL (String -> FastString
    fsLit String
    "realToFrac")  Unique
    realToFracIdKey
    mkRationalBase2Name :: Name
    mkRationalBase2Name  = Module -> FastString -> Unique -> Name
    varQual  Module
    gHC_INTERNAL_REAL  (String -> FastString
    fsLit String
    "mkRationalBase2")  Unique
    mkRationalBase2IdKey
    mkRationalBase10Name :: Name
    mkRationalBase10Name = Module -> FastString -> Unique -> Name
    varQual  Module
    gHC_INTERNAL_REAL  (String -> FastString
    fsLit String
    "mkRationalBase10") Unique
    mkRationalBase10IdKey

    -- GHC.Internal.Float classes
    floatingClassName, realFloatClassName :: Name
    floatingClassName :: Name
    floatingClassName  = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_INTERNAL_FLOAT (String -> FastString
    fsLit String
    "Floating")  Unique
    floatingClassKey
    realFloatClassName :: Name
    realFloatClassName = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_INTERNAL_FLOAT (String -> FastString
    fsLit String
    "RealFloat") Unique
    realFloatClassKey

    -- other GHC.Internal.Float functions
    integerToFloatName, integerToDoubleName,
      naturalToFloatName, naturalToDoubleName,
      rationalToFloatName, rationalToDoubleName :: Name
    integerToFloatName :: Name
    integerToFloatName   = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_FLOAT (String -> FastString
    fsLit String
    "integerToFloat#") Unique
    integerToFloatIdKey
    integerToDoubleName :: Name
    integerToDoubleName  = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_FLOAT (String -> FastString
    fsLit String
    "integerToDouble#") Unique
    integerToDoubleIdKey
    naturalToFloatName :: Name
    naturalToFloatName   = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_FLOAT (String -> FastString
    fsLit String
    "naturalToFloat#") Unique
    naturalToFloatIdKey
    naturalToDoubleName :: Name
    naturalToDoubleName  = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_FLOAT (String -> FastString
    fsLit String
    "naturalToDouble#") Unique
    naturalToDoubleIdKey
    rationalToFloatName :: Name
    rationalToFloatName  = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_FLOAT (String -> FastString
    fsLit String
    "rationalToFloat") Unique
    rationalToFloatIdKey
    rationalToDoubleName :: Name
    rationalToDoubleName = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_FLOAT (String -> FastString
    fsLit String
    "rationalToDouble") Unique
    rationalToDoubleIdKey

    -- Class Ix
    ixClassName :: Name
    ixClassName :: Name
    ixClassName = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_INTERNAL_IX (String -> FastString
    fsLit String
    "Ix") Unique
    ixClassKey

    -- Typeable representation types
    trModuleTyConName
      , trModuleDataConName
      , trNameTyConName
      , trNameSDataConName
      , trNameDDataConName
      , trTyConTyConName
      , trTyConDataConName
      :: Name
    trModuleTyConName :: Name
    trModuleTyConName     = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_TYPES          (String -> FastString
    fsLit String
    "Module")         Unique
    trModuleTyConKey
    trModuleDataConName :: Name
    trModuleDataConName   = Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_TYPES          (String -> FastString
    fsLit String
    "Module")         Unique
    trModuleDataConKey
    trNameTyConName :: Name
    trNameTyConName       = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_TYPES          (String -> FastString
    fsLit String
    "TrName")         Unique
    trNameTyConKey
    trNameSDataConName :: Name
    trNameSDataConName    = Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_TYPES          (String -> FastString
    fsLit String
    "TrNameS")        Unique
    trNameSDataConKey
    trNameDDataConName :: Name
    trNameDDataConName    = Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_TYPES          (String -> FastString
    fsLit String
    "TrNameD")        Unique
    trNameDDataConKey
    trTyConTyConName :: Name
    trTyConTyConName      = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_TYPES          (String -> FastString
    fsLit String
    "TyCon")          Unique
    trTyConTyConKey
    trTyConDataConName :: Name
    trTyConDataConName    = Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_TYPES          (String -> FastString
    fsLit String
    "TyCon")          Unique
    trTyConDataConKey

    kindRepTyConName
      , kindRepTyConAppDataConName
      , kindRepVarDataConName
      , kindRepAppDataConName
      , kindRepFunDataConName
      , kindRepTYPEDataConName
      , kindRepTypeLitSDataConName
      , kindRepTypeLitDDataConName
      :: Name
    kindRepTyConName :: Name
    kindRepTyConName      = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_TYPES          (String -> FastString
    fsLit String
    "KindRep")        Unique
    kindRepTyConKey
    kindRepTyConAppDataConName :: Name
    kindRepTyConAppDataConName = Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_TYPES     (String -> FastString
    fsLit String
    "KindRepTyConApp") Unique
    kindRepTyConAppDataConKey
    kindRepVarDataConName :: Name
    kindRepVarDataConName = Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_TYPES          (String -> FastString
    fsLit String
    "KindRepVar")     Unique
    kindRepVarDataConKey
    kindRepAppDataConName :: Name
    kindRepAppDataConName = Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_TYPES          (String -> FastString
    fsLit String
    "KindRepApp")     Unique
    kindRepAppDataConKey
    kindRepFunDataConName :: Name
    kindRepFunDataConName = Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_TYPES          (String -> FastString
    fsLit String
    "KindRepFun")     Unique
    kindRepFunDataConKey
    kindRepTYPEDataConName :: Name
    kindRepTYPEDataConName = Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_TYPES         (String -> FastString
    fsLit String
    "KindRepTYPE")    Unique
    kindRepTYPEDataConKey
    kindRepTypeLitSDataConName :: Name
    kindRepTypeLitSDataConName = Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_TYPES     (String -> FastString
    fsLit String
    "KindRepTypeLitS") Unique
    kindRepTypeLitSDataConKey
    kindRepTypeLitDDataConName :: Name
    kindRepTypeLitDDataConName = Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_TYPES     (String -> FastString
    fsLit String
    "KindRepTypeLitD") Unique
    kindRepTypeLitDDataConKey

    typeLitSortTyConName
      , typeLitSymbolDataConName
      , typeLitNatDataConName
      , typeLitCharDataConName
      :: Name
    typeLitSortTyConName :: Name
    typeLitSortTyConName     = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_TYPES       (String -> FastString
    fsLit String
    "TypeLitSort")    Unique
    typeLitSortTyConKey
    typeLitSymbolDataConName :: Name
    typeLitSymbolDataConName = Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_TYPES       (String -> FastString
    fsLit String
    "TypeLitSymbol")  Unique
    typeLitSymbolDataConKey
    typeLitNatDataConName :: Name
    typeLitNatDataConName    = Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_TYPES       (String -> FastString
    fsLit String
    "TypeLitNat")     Unique
    typeLitNatDataConKey
    typeLitCharDataConName :: Name
    typeLitCharDataConName   = Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_TYPES       (String -> FastString
    fsLit String
    "TypeLitChar")    Unique
    typeLitCharDataConKey

    -- Class Typeable, and functions for constructing `Typeable` dictionaries
    typeableClassName
      , typeRepTyConName
      , someTypeRepTyConName
      , someTypeRepDataConName
      , mkTrTypeName
      , mkTrConName
      , mkTrAppName
      , mkTrFunName
      , typeRepIdName
      , typeNatTypeRepName
      , typeSymbolTypeRepName
      , typeCharTypeRepName
      , trGhcPrimModuleName
      :: Name
    typeableClassName :: Name
    typeableClassName     = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_INTERNAL_TYPEABLE_INTERNAL (String -> FastString
    fsLit String
    "Typeable")       Unique
    typeableClassKey
    typeRepTyConName :: Name
    typeRepTyConName      = Module -> FastString -> Unique -> Name
    tcQual  Module
    gHC_INTERNAL_TYPEABLE_INTERNAL (String -> FastString
    fsLit String
    "TypeRep")        Unique
    typeRepTyConKey
    someTypeRepTyConName :: Name
    someTypeRepTyConName   = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_INTERNAL_TYPEABLE_INTERNAL (String -> FastString
    fsLit String
    "SomeTypeRep")    Unique
    someTypeRepTyConKey
    someTypeRepDataConName :: Name
    someTypeRepDataConName = Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_INTERNAL_TYPEABLE_INTERNAL (String -> FastString
    fsLit String
    "SomeTypeRep")    Unique
    someTypeRepDataConKey
    typeRepIdName :: Name
    typeRepIdName         = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_TYPEABLE_INTERNAL (String -> FastString
    fsLit String
    "typeRep#")       Unique
    typeRepIdKey
    mkTrTypeName :: Name
    mkTrTypeName          = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_TYPEABLE_INTERNAL (String -> FastString
    fsLit String
    "mkTrType")       Unique
    mkTrTypeKey
    mkTrConName :: Name
    mkTrConName           = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_TYPEABLE_INTERNAL (String -> FastString
    fsLit String
    "mkTrCon")        Unique
    mkTrConKey
    mkTrAppName :: Name
    mkTrAppName           = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_TYPEABLE_INTERNAL (String -> FastString
    fsLit String
    "mkTrApp")        Unique
    mkTrAppKey
    mkTrFunName :: Name
    mkTrFunName           = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_TYPEABLE_INTERNAL (String -> FastString
    fsLit String
    "mkTrFun")        Unique
    mkTrFunKey
    typeNatTypeRepName :: Name
    typeNatTypeRepName    = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_TYPEABLE_INTERNAL (String -> FastString
    fsLit String
    "typeNatTypeRep") Unique
    typeNatTypeRepKey
    typeSymbolTypeRepName :: Name
    typeSymbolTypeRepName = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_TYPEABLE_INTERNAL (String -> FastString
    fsLit String
    "typeSymbolTypeRep") Unique
    typeSymbolTypeRepKey
    typeCharTypeRepName :: Name
    typeCharTypeRepName   = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_TYPEABLE_INTERNAL (String -> FastString
    fsLit String
    "typeCharTypeRep") Unique
    typeCharTypeRepKey
    -- this is the Typeable 'Module' for GHC.Prim (which has no code, so we place in GHC.Types)
    -- See Note [Grand plan for Typeable] in GHC.Tc.Instance.Typeable.
    trGhcPrimModuleName :: Name
    trGhcPrimModuleName   = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_TYPES         (String -> FastString
    fsLit String
    "tr$ModuleGHCPrim")  Unique
    trGhcPrimModuleKey

    -- Typeable KindReps for some common cases
    starKindRepName, starArrStarKindRepName,
      starArrStarArrStarKindRepName, constraintKindRepName :: Name
    starKindRepName :: Name
    starKindRepName        = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_TYPES         (String -> FastString
    fsLit String
    "krep$*")          Unique
    starKindRepKey
    starArrStarKindRepName :: Name
    starArrStarKindRepName = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_TYPES         (String -> FastString
    fsLit String
    "krep$*Arr*")      Unique
    starArrStarKindRepKey
    starArrStarArrStarKindRepName :: Name
    starArrStarArrStarKindRepName = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_TYPES  (String -> FastString
    fsLit String
    "krep$*->*->*")    Unique
    starArrStarArrStarKindRepKey
    constraintKindRepName :: Name
    constraintKindRepName  = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_TYPES         (String -> FastString
    fsLit String
    "krep$Constraint") Unique
    constraintKindRepKey

    -- WithDict
    withDictClassName :: Name
    withDictClassName :: Name
    withDictClassName = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_MAGIC_DICT (String -> FastString
    fsLit String
    "WithDict") Unique
    withDictClassKey

    nonEmptyTyConName :: Name
    nonEmptyTyConName :: Name
    nonEmptyTyConName = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_INTERNAL_BASE (String -> FastString
    fsLit String
    "NonEmpty") Unique
    nonEmptyTyConKey

    -- DataToTag
    dataToTagClassName :: Name
    dataToTagClassName :: Name
    dataToTagClassName    = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_MAGIC      (String -> FastString
    fsLit String
    "DataToTag") Unique
    dataToTagClassKey

    -- seq#
    seqHashName :: Name
    seqHashName :: Name
    seqHashName = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_IO (String -> FastString
    fsLit String
    "seq#") Unique
    seqHashKey

    -- Custom type errors
    errorMessageTypeErrorFamName
      , typeErrorTextDataConName
      , typeErrorAppendDataConName
      , typeErrorVAppendDataConName
      , typeErrorShowTypeDataConName
      :: Name

    errorMessageTypeErrorFamName :: Name
    errorMessageTypeErrorFamName =
      Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_INTERNAL_TYPEERROR (String -> FastString
    fsLit String
    "TypeError") Unique
    errorMessageTypeErrorFamKey

    typeErrorTextDataConName :: Name
    typeErrorTextDataConName =
      Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_INTERNAL_TYPEERROR (String -> FastString
    fsLit String
    "Text") Unique
    typeErrorTextDataConKey

    typeErrorAppendDataConName :: Name
    typeErrorAppendDataConName =
      Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_INTERNAL_TYPEERROR (String -> FastString
    fsLit String
    ":<>:") Unique
    typeErrorAppendDataConKey

    typeErrorVAppendDataConName :: Name
    typeErrorVAppendDataConName =
      Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_INTERNAL_TYPEERROR (String -> FastString
    fsLit String
    ":$$:") Unique
    typeErrorVAppendDataConKey

    typeErrorShowTypeDataConName :: Name
    typeErrorShowTypeDataConName =
      Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_INTERNAL_TYPEERROR (String -> FastString
    fsLit String
    "ShowType") Unique
    typeErrorShowTypeDataConKey

    -- "Unsatisfiable" constraint
    unsatisfiableClassName, unsatisfiableIdName :: Name
    unsatisfiableClassName :: Name
    unsatisfiableClassName =
      Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_INTERNAL_TYPEERROR (String -> FastString
    fsLit String
    "Unsatisfiable") Unique
    unsatisfiableClassNameKey
    unsatisfiableIdName :: Name
    unsatisfiableIdName =
      Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_TYPEERROR (String -> FastString
    fsLit String
    "unsatisfiable") Unique
    unsatisfiableIdNameKey

    -- Unsafe coercion proofs
    unsafeEqualityProofName, unsafeEqualityTyConName, unsafeCoercePrimName,
      unsafeReflDataConName :: Name
    unsafeEqualityProofName :: Name
    unsafeEqualityProofName = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_UNSAFE_COERCE (String -> FastString
    fsLit String
    "unsafeEqualityProof") Unique
    unsafeEqualityProofIdKey
    unsafeEqualityTyConName :: Name
    unsafeEqualityTyConName = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_INTERNAL_UNSAFE_COERCE (String -> FastString
    fsLit String
    "UnsafeEquality") Unique
    unsafeEqualityTyConKey
    unsafeReflDataConName :: Name
    unsafeReflDataConName   = Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_INTERNAL_UNSAFE_COERCE (String -> FastString
    fsLit String
    "UnsafeRefl")     Unique
    unsafeReflDataConKey
    unsafeCoercePrimName :: Name
    unsafeCoercePrimName    = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_UNSAFE_COERCE (String -> FastString
    fsLit String
    "unsafeCoerce#") Unique
    unsafeCoercePrimIdKey

    -- Dynamic
    toDynName :: Name
    toDynName :: Name
    toDynName = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_DYNAMIC (String -> FastString
    fsLit String
    "toDyn") Unique
    toDynIdKey

    -- Class Data
    dataClassName :: Name
    dataClassName :: Name
    dataClassName = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_INTERNAL_DATA_DATA (String -> FastString
    fsLit String
    "Data") Unique
    dataClassKey

    -- Error module
    assertErrorName    :: Name
    assertErrorName :: Name
    assertErrorName   = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_IO_Exception (String -> FastString
    fsLit String
    "assertError") Unique
    assertErrorIdKey

    -- GHC.Internal.Debug.Trace
    traceName          :: Name
    traceName :: Name
    traceName         = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_DEBUG_TRACE (String -> FastString
    fsLit String
    "trace") Unique
    traceKey

    -- Enum module (Enum, Bounded)
    enumClassName, enumFromName, enumFromToName, enumFromThenName,
        enumFromThenToName, boundedClassName :: Name
    enumClassName :: Name
    enumClassName      = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_INTERNAL_ENUM (String -> FastString
    fsLit String
    "Enum")           Unique
    enumClassKey
    enumFromName :: Name
    enumFromName       = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_ENUM (String -> FastString
    fsLit String
    "enumFrom")       Unique
    enumFromClassOpKey
    enumFromToName :: Name
    enumFromToName     = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_ENUM (String -> FastString
    fsLit String
    "enumFromTo")     Unique
    enumFromToClassOpKey
    enumFromThenName :: Name
    enumFromThenName   = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_ENUM (String -> FastString
    fsLit String
    "enumFromThen")   Unique
    enumFromThenClassOpKey
    enumFromThenToName :: Name
    enumFromThenToName = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_ENUM (String -> FastString
    fsLit String
    "enumFromThenTo") Unique
    enumFromThenToClassOpKey
    boundedClassName :: Name
    boundedClassName   = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_INTERNAL_ENUM (String -> FastString
    fsLit String
    "Bounded")        Unique
    boundedClassKey

    -- List functions
    concatName, filterName, zipName :: Name
    concatName :: Name
    concatName        = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_LIST (String -> FastString
    fsLit String
    "concat") Unique
    concatIdKey
    filterName :: Name
    filterName        = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_LIST (String -> FastString
    fsLit String
    "filter") Unique
    filterIdKey
    zipName :: Name
    zipName           = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_LIST (String -> FastString
    fsLit String
    "zip")    Unique
    zipIdKey

    -- Overloaded lists
    isListClassName, fromListName, fromListNName, toListName :: Name
    isListClassName :: Name
    isListClassName = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_INTERNAL_IS_LIST (String -> FastString
    fsLit String
    "IsList")    Unique
    isListClassKey
    fromListName :: Name
    fromListName    = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_IS_LIST (String -> FastString
    fsLit String
    "fromList")  Unique
    fromListClassOpKey
    fromListNName :: Name
    fromListNName   = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_IS_LIST (String -> FastString
    fsLit String
    "fromListN") Unique
    fromListNClassOpKey
    toListName :: Name
    toListName      = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_IS_LIST (String -> FastString
    fsLit String
    "toList")    Unique
    toListClassOpKey

    -- HasField class ops
    getFieldName, setFieldName :: Name
    getFieldName :: Name
    getFieldName   = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_RECORDS (String -> FastString
    fsLit String
    "getField") Unique
    getFieldClassOpKey
    setFieldName :: Name
    setFieldName   = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_RECORDS (String -> FastString
    fsLit String
    "setField") Unique
    setFieldClassOpKey

    -- Class Show
    showClassName :: Name
    showClassName :: Name
    showClassName   = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_INTERNAL_SHOW (String -> FastString
    fsLit String
    "Show")      Unique
    showClassKey

    -- Class Read
    readClassName :: Name
    readClassName :: Name
    readClassName   = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_INTERNAL_READ (String -> FastString
    fsLit String
    "Read")      Unique
    readClassKey

    -- Classes Generic and Generic1, Datatype, Constructor and Selector
    genClassName, gen1ClassName, datatypeClassName, constructorClassName,
      selectorClassName :: Name
    genClassName :: Name
    genClassName  = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "Generic")  Unique
    genClassKey
    gen1ClassName :: Name
    gen1ClassName = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "Generic1") Unique
    gen1ClassKey

    datatypeClassName :: Name
    datatypeClassName    = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "Datatype")    Unique
    datatypeClassKey
    constructorClassName :: Name
    constructorClassName = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "Constructor") Unique
    constructorClassKey
    selectorClassName :: Name
    selectorClassName    = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_INTERNAL_GENERICS (String -> FastString
    fsLit String
    "Selector")    Unique
    selectorClassKey

    genericClassNames :: [Name]
    genericClassNames :: [Name]
    genericClassNames = [Name
    genClassName, Name
    gen1ClassName]

    -- GHCi things
    ghciIoClassName, ghciStepIoMName :: Name
    ghciIoClassName :: Name
    ghciIoClassName = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_INTERNAL_GHCI (String -> FastString
    fsLit String
    "GHCiSandboxIO") Unique
    ghciIoClassKey
    ghciStepIoMName :: Name
    ghciStepIoMName = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_GHCI (String -> FastString
    fsLit String
    "ghciStepIO") Unique
    ghciStepIoMClassOpKey

    -- IO things
    ioTyConName, ioDataConName,
      thenIOName, bindIOName, returnIOName, failIOName :: Name
    ioTyConName :: Name
    ioTyConName       = Module -> FastString -> Unique -> Name
    tcQual  Module
    gHC_TYPES (String -> FastString
    fsLit String
    "IO")       Unique
    ioTyConKey
    ioDataConName :: Name
    ioDataConName     = Module -> FastString -> Unique -> Name
    dcQual  Module
    gHC_TYPES (String -> FastString
    fsLit String
    "IO")       Unique
    ioDataConKey
    thenIOName :: Name
    thenIOName        = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_BASE  (String -> FastString
    fsLit String
    "thenIO")   Unique
    thenIOIdKey
    bindIOName :: Name
    bindIOName        = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_BASE  (String -> FastString
    fsLit String
    "bindIO")   Unique
    bindIOIdKey
    returnIOName :: Name
    returnIOName      = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_BASE  (String -> FastString
    fsLit String
    "returnIO") Unique
    returnIOIdKey
    failIOName :: Name
    failIOName        = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_IO    (String -> FastString
    fsLit String
    "failIO")   Unique
    failIOIdKey

    -- IO things
    printName :: Name
    printName :: Name
    printName         = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_SYSTEM_IO (String -> FastString
    fsLit String
    "print") Unique
    printIdKey

    -- Int, Word, and Addr things
    int8TyConName, int16TyConName, int32TyConName, int64TyConName :: Name
    int8TyConName :: Name
    int8TyConName     = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_INTERNAL_INT  (String -> FastString
    fsLit String
    "Int8")  Unique
    int8TyConKey
    int16TyConName :: Name
    int16TyConName    = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_INTERNAL_INT  (String -> FastString
    fsLit String
    "Int16") Unique
    int16TyConKey
    int32TyConName :: Name
    int32TyConName    = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_INTERNAL_INT  (String -> FastString
    fsLit String
    "Int32") Unique
    int32TyConKey
    int64TyConName :: Name
    int64TyConName    = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_INTERNAL_INT  (String -> FastString
    fsLit String
    "Int64") Unique
    int64TyConKey

    -- Word module
    word8TyConName, word16TyConName, word32TyConName, word64TyConName :: Name
    word8TyConName :: Name
    word8TyConName    = Module -> FastString -> Unique -> Name
    tcQual  Module
    gHC_INTERNAL_WORD (String -> FastString
    fsLit String
    "Word8")  Unique
    word8TyConKey
    word16TyConName :: Name
    word16TyConName   = Module -> FastString -> Unique -> Name
    tcQual  Module
    gHC_INTERNAL_WORD (String -> FastString
    fsLit String
    "Word16") Unique
    word16TyConKey
    word32TyConName :: Name
    word32TyConName   = Module -> FastString -> Unique -> Name
    tcQual  Module
    gHC_INTERNAL_WORD (String -> FastString
    fsLit String
    "Word32") Unique
    word32TyConKey
    word64TyConName :: Name
    word64TyConName   = Module -> FastString -> Unique -> Name
    tcQual  Module
    gHC_INTERNAL_WORD (String -> FastString
    fsLit String
    "Word64") Unique
    word64TyConKey

    -- PrelPtr module
    ptrTyConName, funPtrTyConName :: Name
    ptrTyConName :: Name
    ptrTyConName      = Module -> FastString -> Unique -> Name
    tcQual   Module
    gHC_INTERNAL_PTR (String -> FastString
    fsLit String
    "Ptr")    Unique
    ptrTyConKey
    funPtrTyConName :: Name
    funPtrTyConName   = Module -> FastString -> Unique -> Name
    tcQual   Module
    gHC_INTERNAL_PTR (String -> FastString
    fsLit String
    "FunPtr") Unique
    funPtrTyConKey

    -- Foreign objects and weak pointers
    stablePtrTyConName, newStablePtrName :: Name
    stablePtrTyConName :: Name
    stablePtrTyConName    = Module -> FastString -> Unique -> Name
    tcQual   Module
    gHC_INTERNAL_STABLE (String -> FastString
    fsLit String
    "StablePtr")    Unique
    stablePtrTyConKey
    newStablePtrName :: Name
    newStablePtrName      = Module -> FastString -> Unique -> Name
    varQual  Module
    gHC_INTERNAL_STABLE (String -> FastString
    fsLit String
    "newStablePtr") Unique
    newStablePtrIdKey

    -- Recursive-do notation
    monadFixClassName, mfixName :: Name
    monadFixClassName :: Name
    monadFixClassName  = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_INTERNAL_MONAD_FIX (String -> FastString
    fsLit String
    "MonadFix") Unique
    monadFixClassKey
    mfixName :: Name
    mfixName           = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_MONAD_FIX (String -> FastString
    fsLit String
    "mfix")     Unique
    mfixIdKey

    -- Arrow notation
    arrAName, composeAName, firstAName, appAName, choiceAName, loopAName :: Name
    arrAName :: Name
    arrAName           = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_ARROW (String -> FastString
    fsLit String
    "arr")       Unique
    arrAIdKey
    composeAName :: Name
    composeAName       = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_DESUGAR (String -> FastString
    fsLit String
    ">>>") Unique
    composeAIdKey
    firstAName :: Name
    firstAName         = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_ARROW (String -> FastString
    fsLit String
    "first")     Unique
    firstAIdKey
    appAName :: Name
    appAName           = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_ARROW (String -> FastString
    fsLit String
    "app")       Unique
    appAIdKey
    choiceAName :: Name
    choiceAName        = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_ARROW (String -> FastString
    fsLit String
    "|||")       Unique
    choiceAIdKey
    loopAName :: Name
    loopAName          = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_ARROW (String -> FastString
    fsLit String
    "loop")      Unique
    loopAIdKey

    -- Monad comprehensions
    guardMName, liftMName, mzipName :: Name
    guardMName :: Name
    guardMName         = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_MONAD (String -> FastString
    fsLit String
    "guard")    Unique
    guardMIdKey
    liftMName :: Name
    liftMName          = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_MONAD (String -> FastString
    fsLit String
    "liftM")    Unique
    liftMIdKey
    mzipName :: Name
    mzipName           = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_CONTROL_MONAD_ZIP (String -> FastString
    fsLit String
    "mzip") Unique
    mzipIdKey

    -- Annotation type checking
    toAnnotationWrapperName :: Name
    toAnnotationWrapperName :: Name
    toAnnotationWrapperName = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_DESUGAR (String -> FastString
    fsLit String
    "toAnnotationWrapper") Unique
    toAnnotationWrapperIdKey

    -- Other classes, needed for type defaulting
    monadPlusClassName, isStringClassName :: Name
    monadPlusClassName :: Name
    monadPlusClassName  = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_INTERNAL_MONAD (String -> FastString
    fsLit String
    "MonadPlus")      Unique
    monadPlusClassKey
    isStringClassName :: Name
    isStringClassName   = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_INTERNAL_DATA_STRING (String -> FastString
    fsLit String
    "IsString") Unique
    isStringClassKey

    -- Type-level naturals
    knownNatClassName :: Name
    knownNatClassName :: Name
    knownNatClassName     = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_INTERNAL_TYPENATS (String -> FastString
    fsLit String
    "KnownNat") Unique
    knownNatClassNameKey
    knownSymbolClassName :: Name
    knownSymbolClassName :: Name
    knownSymbolClassName  = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_INTERNAL_TYPELITS (String -> FastString
    fsLit String
    "KnownSymbol") Unique
    knownSymbolClassNameKey
    knownCharClassName :: Name
    knownCharClassName :: Name
    knownCharClassName  = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_INTERNAL_TYPELITS (String -> FastString
    fsLit String
    "KnownChar") Unique
    knownCharClassNameKey

    -- Overloaded labels
    fromLabelClassOpName :: Name
    fromLabelClassOpName :: Name
    fromLabelClassOpName
     = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_OVER_LABELS (String -> FastString
    fsLit String
    "fromLabel") Unique
    fromLabelClassOpKey

    -- Implicit Parameters
    ipClassName :: Name
    ipClassName :: Name
    ipClassName
      = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_CLASSES (String -> FastString
    fsLit String
    "IP") Unique
    ipClassKey

    -- Overloaded record fields
    hasFieldClassName :: Name
    hasFieldClassName :: Name
    hasFieldClassName
     = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_INTERNAL_RECORDS (String -> FastString
    fsLit String
    "HasField") Unique
    hasFieldClassNameKey

    -- ExceptionContext
    exceptionContextTyConName, emptyExceptionContextName :: Name
    exceptionContextTyConName :: Name
    exceptionContextTyConName =
        Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_INTERNAL_EXCEPTION_CONTEXT (String -> FastString
    fsLit String
    "ExceptionContext") Unique
    exceptionContextTyConKey
    emptyExceptionContextName :: Name
    emptyExceptionContextName
      = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_EXCEPTION_CONTEXT (String -> FastString
    fsLit String
    "emptyExceptionContext") Unique
    emptyExceptionContextKey

    -- Source Locations
    callStackTyConName, emptyCallStackName, pushCallStackName,
      srcLocDataConName :: Name
    callStackTyConName :: Name
    callStackTyConName
      = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_INTERNAL_STACK_TYPES  (String -> FastString
    fsLit String
    "CallStack") Unique
    callStackTyConKey
    emptyCallStackName :: Name
    emptyCallStackName
      = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_STACK_TYPES (String -> FastString
    fsLit String
    "emptyCallStack") Unique
    emptyCallStackKey
    pushCallStackName :: Name
    pushCallStackName
      = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_STACK_TYPES (String -> FastString
    fsLit String
    "pushCallStack") Unique
    pushCallStackKey
    srcLocDataConName :: Name
    srcLocDataConName
      = Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_INTERNAL_STACK_TYPES  (String -> FastString
    fsLit String
    "SrcLoc")    Unique
    srcLocDataConKey

    -- plugins
    pLUGINS :: Module
    pLUGINS :: Module
    pLUGINS = FastString -> Module
    mkThisGhcModule (String -> FastString
    fsLit String
    "GHC.Driver.Plugins")
    pluginTyConName :: Name
    pluginTyConName :: Name
    pluginTyConName = Module -> FastString -> Unique -> Name
    tcQual Module
    pLUGINS (String -> FastString
    fsLit String
    "Plugin") Unique
    pluginTyConKey
    frontendPluginTyConName :: Name
    frontendPluginTyConName :: Name
    frontendPluginTyConName = Module -> FastString -> Unique -> Name
    tcQual Module
    pLUGINS (String -> FastString
    fsLit String
    "FrontendPlugin") Unique
    frontendPluginTyConKey

    -- Static pointers
    makeStaticName :: Name
    makeStaticName :: Name
    makeStaticName =
        Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_STATICPTR_INTERNAL (String -> FastString
    fsLit String
    "makeStatic") Unique
    makeStaticKey

    staticPtrInfoTyConName :: Name
    staticPtrInfoTyConName :: Name
    staticPtrInfoTyConName =
        Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_INTERNAL_STATICPTR (String -> FastString
    fsLit String
    "StaticPtrInfo") Unique
    staticPtrInfoTyConKey

    staticPtrInfoDataConName :: Name
    staticPtrInfoDataConName :: Name
    staticPtrInfoDataConName =
        Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_INTERNAL_STATICPTR (String -> FastString
    fsLit String
    "StaticPtrInfo") Unique
    staticPtrInfoDataConKey

    staticPtrTyConName :: Name
    staticPtrTyConName :: Name
    staticPtrTyConName =
        Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_INTERNAL_STATICPTR (String -> FastString
    fsLit String
    "StaticPtr") Unique
    staticPtrTyConKey

    staticPtrDataConName :: Name
    staticPtrDataConName :: Name
    staticPtrDataConName =
        Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_INTERNAL_STATICPTR (String -> FastString
    fsLit String
    "StaticPtr") Unique
    staticPtrDataConKey

    fromStaticPtrName :: Name
    fromStaticPtrName :: Name
    fromStaticPtrName =
        Module -> FastString -> Unique -> Name
    varQual Module
    gHC_INTERNAL_STATICPTR (String -> FastString
    fsLit String
    "fromStaticPtr") Unique
    fromStaticPtrClassOpKey

    fingerprintDataConName :: Name
    fingerprintDataConName :: Name
    fingerprintDataConName =
        Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_INTERNAL_FINGERPRINT_TYPE (String -> FastString
    fsLit String
    "Fingerprint") Unique
    fingerprintDataConKey

    constPtrConName :: Name
    constPtrConName :: Name
    constPtrConName =
        Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_INTERNAL_FOREIGN_C_CONSTPTR (String -> FastString
    fsLit String
    "ConstPtr") Unique
    constPtrTyConKey

    jsvalTyConName :: Name
    jsvalTyConName :: Name
    jsvalTyConName = Module -> FastString -> Unique -> Name
    tcQual (FastString -> Module
    mkGhcInternalModule (String -> FastString
    fsLit String
    "GHC.Internal.Wasm.Prim.Types")) (String -> FastString
    fsLit String
    "JSVal") Unique
    jsvalTyConKey

    {-
    ************************************************************************
    *                                                                      *
    \subsection{Local helpers}
    *                                                                      *
    ************************************************************************

    All these are original names; hence mkOrig
    -}

    {-# INLINE varQual #-}
    {-# INLINE tcQual #-}
    {-# INLINE clsQual #-}
    {-# INLINE dcQual #-}
    varQual, tcQual, clsQual, dcQual :: Module -> FastString -> Unique -> Name
    varQual :: Module -> FastString -> Unique -> Name
    varQual  Module
    modu FastString
    str Unique
    unique = NameSpace -> Module -> FastString -> Unique -> Name
    mk_known_key_name NameSpace
    varName Module
    modu FastString
    str Unique
    unique
    tcQual :: Module -> FastString -> Unique -> Name
    tcQual   Module
    modu FastString
    str Unique
    unique = NameSpace -> Module -> FastString -> Unique -> Name
    mk_known_key_name NameSpace
    tcName Module
    modu FastString
    str Unique
    unique
    clsQual :: Module -> FastString -> Unique -> Name
    clsQual  Module
    modu FastString
    str Unique
    unique = NameSpace -> Module -> FastString -> Unique -> Name
    mk_known_key_name NameSpace
    clsName Module
    modu FastString
    str Unique
    unique
    dcQual :: Module -> FastString -> Unique -> Name
    dcQual   Module
    modu FastString
    str Unique
    unique = NameSpace -> Module -> FastString -> Unique -> Name
    mk_known_key_name NameSpace
    dataName Module
    modu FastString
    str Unique
    unique

    mk_known_key_name :: NameSpace -> Module -> FastString -> Unique -> Name
    {-# INLINE mk_known_key_name #-}
    mk_known_key_name :: NameSpace -> Module -> FastString -> Unique -> Name
    mk_known_key_name NameSpace
    space Module
    modu FastString
    str Unique
    unique
      = Unique -> Module -> OccName -> SrcSpan -> Name
    mkExternalName Unique
    unique Module
    modu (NameSpace -> FastString -> OccName
    mkOccNameFS NameSpace
    space FastString
    str) SrcSpan
    noSrcSpan

    {-
    ************************************************************************
    *                                                                      *
    \subsubsection[Uniques-prelude-Classes]{@Uniques@ for wired-in @Classes@}
    *                                                                      *
    ************************************************************************
    --MetaHaskell extension hand allocate keys here
    -}

    boundedClassKey, enumClassKey, eqClassKey, floatingClassKey,
        fractionalClassKey, integralClassKey, monadClassKey, dataClassKey,
        functorClassKey, numClassKey, ordClassKey, readClassKey, realClassKey,
        realFloatClassKey, realFracClassKey, showClassKey, ixClassKey :: Unique
    boundedClassKey :: Unique
    boundedClassKey         = Int -> Unique
    mkPreludeClassUnique Int
    1
    enumClassKey :: Unique
    enumClassKey            = Int -> Unique
    mkPreludeClassUnique Int
    2
    eqClassKey :: Unique
    eqClassKey              = Int -> Unique
    mkPreludeClassUnique Int
    3
    floatingClassKey :: Unique
    floatingClassKey        = Int -> Unique
    mkPreludeClassUnique Int
    5
    fractionalClassKey :: Unique
    fractionalClassKey      = Int -> Unique
    mkPreludeClassUnique Int
    6
    integralClassKey :: Unique
    integralClassKey        = Int -> Unique
    mkPreludeClassUnique Int
    7
    monadClassKey :: Unique
    monadClassKey           = Int -> Unique
    mkPreludeClassUnique Int
    8
    dataClassKey :: Unique
    dataClassKey            = Int -> Unique
    mkPreludeClassUnique Int
    9
    functorClassKey :: Unique
    functorClassKey         = Int -> Unique
    mkPreludeClassUnique Int
    10
    numClassKey :: Unique
    numClassKey             = Int -> Unique
    mkPreludeClassUnique Int
    11
    ordClassKey :: Unique
    ordClassKey             = Int -> Unique
    mkPreludeClassUnique Int
    12
    readClassKey :: Unique
    readClassKey            = Int -> Unique
    mkPreludeClassUnique Int
    13
    realClassKey :: Unique
    realClassKey            = Int -> Unique
    mkPreludeClassUnique Int
    14
    realFloatClassKey :: Unique
    realFloatClassKey       = Int -> Unique
    mkPreludeClassUnique Int
    15
    realFracClassKey :: Unique
    realFracClassKey        = Int -> Unique
    mkPreludeClassUnique Int
    16
    showClassKey :: Unique
    showClassKey            = Int -> Unique
    mkPreludeClassUnique Int
    17
    ixClassKey :: Unique
    ixClassKey              = Int -> Unique
    mkPreludeClassUnique Int
    18

    typeableClassKey :: Unique
    typeableClassKey :: Unique
    typeableClassKey        = Int -> Unique
    mkPreludeClassUnique Int
    20

    withDictClassKey :: Unique
    withDictClassKey :: Unique
    withDictClassKey        = Int -> Unique
    mkPreludeClassUnique Int
    21

    dataToTagClassKey :: Unique
    dataToTagClassKey :: Unique
    dataToTagClassKey       = Int -> Unique
    mkPreludeClassUnique Int
    23

    monadFixClassKey :: Unique
    monadFixClassKey :: Unique
    monadFixClassKey        = Int -> Unique
    mkPreludeClassUnique Int
    28

    monadFailClassKey :: Unique
    monadFailClassKey :: Unique
    monadFailClassKey       = Int -> Unique
    mkPreludeClassUnique Int
    29

    monadPlusClassKey, randomClassKey, randomGenClassKey :: Unique
    monadPlusClassKey :: Unique
    monadPlusClassKey       = Int -> Unique
    mkPreludeClassUnique Int
    30
    randomClassKey :: Unique
    randomClassKey          = Int -> Unique
    mkPreludeClassUnique Int
    31
    randomGenClassKey :: Unique
    randomGenClassKey       = Int -> Unique
    mkPreludeClassUnique Int
    32

    isStringClassKey :: Unique
    isStringClassKey :: Unique
    isStringClassKey        = Int -> Unique
    mkPreludeClassUnique Int
    33

    applicativeClassKey, foldableClassKey, traversableClassKey :: Unique
    applicativeClassKey :: Unique
    applicativeClassKey     = Int -> Unique
    mkPreludeClassUnique Int
    34
    foldableClassKey :: Unique
    foldableClassKey        = Int -> Unique
    mkPreludeClassUnique Int
    35
    traversableClassKey :: Unique
    traversableClassKey     = Int -> Unique
    mkPreludeClassUnique Int
    36

    genClassKey, gen1ClassKey, datatypeClassKey, constructorClassKey,
      selectorClassKey :: Unique
    genClassKey :: Unique
    genClassKey   = Int -> Unique
    mkPreludeClassUnique Int
    37
    gen1ClassKey :: Unique
    gen1ClassKey  = Int -> Unique
    mkPreludeClassUnique Int
    38

    datatypeClassKey :: Unique
    datatypeClassKey    = Int -> Unique
    mkPreludeClassUnique Int
    39
    constructorClassKey :: Unique
    constructorClassKey = Int -> Unique
    mkPreludeClassUnique Int
    40
    selectorClassKey :: Unique
    selectorClassKey    = Int -> Unique
    mkPreludeClassUnique Int
    41

    -- KnownNat: see Note [KnownNat & KnownSymbol and EvLit] in GHC.Tc.Instance.Class
    knownNatClassNameKey :: Unique
    knownNatClassNameKey :: Unique
    knownNatClassNameKey = Int -> Unique
    mkPreludeClassUnique Int
    42

    -- KnownSymbol: see Note [KnownNat & KnownSymbol and EvLit] in GHC.Tc.Instance.Class
    knownSymbolClassNameKey :: Unique
    knownSymbolClassNameKey :: Unique
    knownSymbolClassNameKey = Int -> Unique
    mkPreludeClassUnique Int
    43

    knownCharClassNameKey :: Unique
    knownCharClassNameKey :: Unique
    knownCharClassNameKey = Int -> Unique
    mkPreludeClassUnique Int
    44

    ghciIoClassKey :: Unique
    ghciIoClassKey :: Unique
    ghciIoClassKey = Int -> Unique
    mkPreludeClassUnique Int
    45

    semigroupClassKey, monoidClassKey :: Unique
    semigroupClassKey :: Unique
    semigroupClassKey = Int -> Unique
    mkPreludeClassUnique Int
    47
    monoidClassKey :: Unique
    monoidClassKey    = Int -> Unique
    mkPreludeClassUnique Int
    48

    -- Implicit Parameters
    ipClassKey :: Unique
    ipClassKey :: Unique
    ipClassKey = Int -> Unique
    mkPreludeClassUnique Int
    49

    -- Overloaded record fields
    hasFieldClassNameKey :: Unique
    hasFieldClassNameKey :: Unique
    hasFieldClassNameKey = Int -> Unique
    mkPreludeClassUnique Int
    50

    ---------------- Template Haskell -------------------
    --      GHC.Builtin.Names.TH: USES ClassUniques 200-299
    -----------------------------------------------------

    {-
    ************************************************************************
    *                                                                      *
    \subsubsection[Uniques-prelude-TyCons]{@Uniques@ for wired-in @TyCons@}
    *                                                                      *
    ************************************************************************
    -}

    addrPrimTyConKey, arrayPrimTyConKey, boolTyConKey,
        byteArrayPrimTyConKey, charPrimTyConKey, charTyConKey, doublePrimTyConKey,
        doubleTyConKey, floatPrimTyConKey, floatTyConKey, fUNTyConKey,
        intPrimTyConKey, intTyConKey, int8TyConKey, int16TyConKey,
        int8PrimTyConKey, int16PrimTyConKey, int32PrimTyConKey, int32TyConKey,
        int64PrimTyConKey, int64TyConKey,
        integerTyConKey, naturalTyConKey,
        listTyConKey, foreignObjPrimTyConKey, maybeTyConKey,
        weakPrimTyConKey, mutableArrayPrimTyConKey,
        mutableByteArrayPrimTyConKey, orderingTyConKey, mVarPrimTyConKey,
        ratioTyConKey, rationalTyConKey, realWorldTyConKey, stablePtrPrimTyConKey,
        stablePtrTyConKey, eqTyConKey, heqTyConKey, ioPortPrimTyConKey,
        smallArrayPrimTyConKey, smallMutableArrayPrimTyConKey,
        stringTyConKey,
        ccArrowTyConKey, ctArrowTyConKey, tcArrowTyConKey :: Unique
    addrPrimTyConKey :: Unique
    addrPrimTyConKey                        = Int -> Unique
    mkPreludeTyConUnique  Int
    1
    arrayPrimTyConKey :: Unique
    arrayPrimTyConKey                       = Int -> Unique
    mkPreludeTyConUnique  Int
    3
    boolTyConKey :: Unique
    boolTyConKey                            = Int -> Unique
    mkPreludeTyConUnique  Int
    4
    byteArrayPrimTyConKey :: Unique
    byteArrayPrimTyConKey                   = Int -> Unique
    mkPreludeTyConUnique  Int
    5
    stringTyConKey :: Unique
    stringTyConKey                          = Int -> Unique
    mkPreludeTyConUnique  Int
    6
    charPrimTyConKey :: Unique
    charPrimTyConKey                        = Int -> Unique
    mkPreludeTyConUnique  Int
    7
    charTyConKey :: Unique
    charTyConKey                            = Int -> Unique
    mkPreludeTyConUnique  Int
    8
    doublePrimTyConKey :: Unique
    doublePrimTyConKey                      = Int -> Unique
    mkPreludeTyConUnique  Int
    9
    doubleTyConKey :: Unique
    doubleTyConKey                          = Int -> Unique
    mkPreludeTyConUnique Int
    10
    floatPrimTyConKey :: Unique
    floatPrimTyConKey                       = Int -> Unique
    mkPreludeTyConUnique Int
    11
    floatTyConKey :: Unique
    floatTyConKey                           = Int -> Unique
    mkPreludeTyConUnique Int
    12
    fUNTyConKey :: Unique
    fUNTyConKey                             = Int -> Unique
    mkPreludeTyConUnique Int
    13
    intPrimTyConKey :: Unique
    intPrimTyConKey                         = Int -> Unique
    mkPreludeTyConUnique Int
    14
    intTyConKey :: Unique
    intTyConKey                             = Int -> Unique
    mkPreludeTyConUnique Int
    15
    int8PrimTyConKey :: Unique
    int8PrimTyConKey                        = Int -> Unique
    mkPreludeTyConUnique Int
    16
    int8TyConKey :: Unique
    int8TyConKey                            = Int -> Unique
    mkPreludeTyConUnique Int
    17
    int16PrimTyConKey :: Unique
    int16PrimTyConKey                       = Int -> Unique
    mkPreludeTyConUnique Int
    18
    int16TyConKey :: Unique
    int16TyConKey                           = Int -> Unique
    mkPreludeTyConUnique Int
    19
    int32PrimTyConKey :: Unique
    int32PrimTyConKey                       = Int -> Unique
    mkPreludeTyConUnique Int
    20
    int32TyConKey :: Unique
    int32TyConKey                           = Int -> Unique
    mkPreludeTyConUnique Int
    21
    int64PrimTyConKey :: Unique
    int64PrimTyConKey                       = Int -> Unique
    mkPreludeTyConUnique Int
    22
    int64TyConKey :: Unique
    int64TyConKey                           = Int -> Unique
    mkPreludeTyConUnique Int
    23
    integerTyConKey :: Unique
    integerTyConKey                         = Int -> Unique
    mkPreludeTyConUnique Int
    24
    naturalTyConKey :: Unique
    naturalTyConKey                         = Int -> Unique
    mkPreludeTyConUnique Int
    25

    listTyConKey :: Unique
    listTyConKey                            = Int -> Unique
    mkPreludeTyConUnique Int
    26
    foreignObjPrimTyConKey :: Unique
    foreignObjPrimTyConKey                  = Int -> Unique
    mkPreludeTyConUnique Int
    27
    maybeTyConKey :: Unique
    maybeTyConKey                           = Int -> Unique
    mkPreludeTyConUnique Int
    28
    weakPrimTyConKey :: Unique
    weakPrimTyConKey                        = Int -> Unique
    mkPreludeTyConUnique Int
    29
    mutableArrayPrimTyConKey :: Unique
    mutableArrayPrimTyConKey                = Int -> Unique
    mkPreludeTyConUnique Int
    30
    mutableByteArrayPrimTyConKey :: Unique
    mutableByteArrayPrimTyConKey            = Int -> Unique
    mkPreludeTyConUnique Int
    31
    orderingTyConKey :: Unique
    orderingTyConKey                        = Int -> Unique
    mkPreludeTyConUnique Int
    32
    mVarPrimTyConKey :: Unique
    mVarPrimTyConKey                        = Int -> Unique
    mkPreludeTyConUnique Int
    33
    ioPortPrimTyConKey :: Unique
    ioPortPrimTyConKey                      = Int -> Unique
    mkPreludeTyConUnique Int
    34
    ratioTyConKey :: Unique
    ratioTyConKey                           = Int -> Unique
    mkPreludeTyConUnique Int
    35
    rationalTyConKey :: Unique
    rationalTyConKey                        = Int -> Unique
    mkPreludeTyConUnique Int
    36
    realWorldTyConKey :: Unique
    realWorldTyConKey                       = Int -> Unique
    mkPreludeTyConUnique Int
    37
    stablePtrPrimTyConKey :: Unique
    stablePtrPrimTyConKey                   = Int -> Unique
    mkPreludeTyConUnique Int
    38
    stablePtrTyConKey :: Unique
    stablePtrTyConKey                       = Int -> Unique
    mkPreludeTyConUnique Int
    39
    eqTyConKey :: Unique
    eqTyConKey                              = Int -> Unique
    mkPreludeTyConUnique Int
    40
    heqTyConKey :: Unique
    heqTyConKey                             = Int -> Unique
    mkPreludeTyConUnique Int
    41

    ctArrowTyConKey :: Unique
    ctArrowTyConKey                       = Int -> Unique
    mkPreludeTyConUnique Int
    42
    ccArrowTyConKey :: Unique
    ccArrowTyConKey                       = Int -> Unique
    mkPreludeTyConUnique Int
    43
    tcArrowTyConKey :: Unique
    tcArrowTyConKey                       = Int -> Unique
    mkPreludeTyConUnique Int
    44

    statePrimTyConKey, stableNamePrimTyConKey, stableNameTyConKey,
        mutVarPrimTyConKey, ioTyConKey,
        wordPrimTyConKey, wordTyConKey, word8PrimTyConKey, word8TyConKey,
        word16PrimTyConKey, word16TyConKey, word32PrimTyConKey, word32TyConKey,
        word64PrimTyConKey, word64TyConKey,
        kindConKey, boxityConKey,
        typeConKey, threadIdPrimTyConKey, bcoPrimTyConKey, ptrTyConKey,
        funPtrTyConKey, tVarPrimTyConKey, eqPrimTyConKey,
        eqReprPrimTyConKey, eqPhantPrimTyConKey,
        compactPrimTyConKey, stackSnapshotPrimTyConKey,
        promptTagPrimTyConKey, constPtrTyConKey, jsvalTyConKey :: Unique
    statePrimTyConKey :: Unique
    statePrimTyConKey                       = Int -> Unique
    mkPreludeTyConUnique Int
    50
    stableNamePrimTyConKey :: Unique
    stableNamePrimTyConKey                  = Int -> Unique
    mkPreludeTyConUnique Int
    51
    stableNameTyConKey :: Unique
    stableNameTyConKey                      = Int -> Unique
    mkPreludeTyConUnique Int
    52
    eqPrimTyConKey :: Unique
    eqPrimTyConKey                          = Int -> Unique
    mkPreludeTyConUnique Int
    53
    eqReprPrimTyConKey :: Unique
    eqReprPrimTyConKey                      = Int -> Unique
    mkPreludeTyConUnique Int
    54
    eqPhantPrimTyConKey :: Unique
    eqPhantPrimTyConKey                     = Int -> Unique
    mkPreludeTyConUnique Int
    55
    mutVarPrimTyConKey :: Unique
    mutVarPrimTyConKey                      = Int -> Unique
    mkPreludeTyConUnique Int
    56
    ioTyConKey :: Unique
    ioTyConKey                              = Int -> Unique
    mkPreludeTyConUnique Int
    57
    wordPrimTyConKey :: Unique
    wordPrimTyConKey                        = Int -> Unique
    mkPreludeTyConUnique Int
    59
    wordTyConKey :: Unique
    wordTyConKey                            = Int -> Unique
    mkPreludeTyConUnique Int
    60
    word8PrimTyConKey :: Unique
    word8PrimTyConKey                       = Int -> Unique
    mkPreludeTyConUnique Int
    61
    word8TyConKey :: Unique
    word8TyConKey                           = Int -> Unique
    mkPreludeTyConUnique Int
    62
    word16PrimTyConKey :: Unique
    word16PrimTyConKey                      = Int -> Unique
    mkPreludeTyConUnique Int
    63
    word16TyConKey :: Unique
    word16TyConKey                          = Int -> Unique
    mkPreludeTyConUnique Int
    64
    word32PrimTyConKey :: Unique
    word32PrimTyConKey                      = Int -> Unique
    mkPreludeTyConUnique Int
    65
    word32TyConKey :: Unique
    word32TyConKey                          = Int -> Unique
    mkPreludeTyConUnique Int
    66
    word64PrimTyConKey :: Unique
    word64PrimTyConKey                      = Int -> Unique
    mkPreludeTyConUnique Int
    67
    word64TyConKey :: Unique
    word64TyConKey                          = Int -> Unique
    mkPreludeTyConUnique Int
    68
    kindConKey :: Unique
    kindConKey                              = Int -> Unique
    mkPreludeTyConUnique Int
    72
    boxityConKey :: Unique
    boxityConKey                            = Int -> Unique
    mkPreludeTyConUnique Int
    73
    typeConKey :: Unique
    typeConKey                              = Int -> Unique
    mkPreludeTyConUnique Int
    74
    threadIdPrimTyConKey :: Unique
    threadIdPrimTyConKey                    = Int -> Unique
    mkPreludeTyConUnique Int
    75
    bcoPrimTyConKey :: Unique
    bcoPrimTyConKey                         = Int -> Unique
    mkPreludeTyConUnique Int
    76
    ptrTyConKey :: Unique
    ptrTyConKey                             = Int -> Unique
    mkPreludeTyConUnique Int
    77
    funPtrTyConKey :: Unique
    funPtrTyConKey                          = Int -> Unique
    mkPreludeTyConUnique Int
    78
    tVarPrimTyConKey :: Unique
    tVarPrimTyConKey                        = Int -> Unique
    mkPreludeTyConUnique Int
    79
    compactPrimTyConKey :: Unique
    compactPrimTyConKey                     = Int -> Unique
    mkPreludeTyConUnique Int
    80
    stackSnapshotPrimTyConKey :: Unique
    stackSnapshotPrimTyConKey               = Int -> Unique
    mkPreludeTyConUnique Int
    81
    promptTagPrimTyConKey :: Unique
    promptTagPrimTyConKey                   = Int -> Unique
    mkPreludeTyConUnique Int
    82

    eitherTyConKey :: Unique
    eitherTyConKey :: Unique
    eitherTyConKey                          = Int -> Unique
    mkPreludeTyConUnique Int
    84

    voidTyConKey :: Unique
    voidTyConKey :: Unique
    voidTyConKey                            = Int -> Unique
    mkPreludeTyConUnique Int
    85

    nonEmptyTyConKey :: Unique
    nonEmptyTyConKey :: Unique
    nonEmptyTyConKey                        = Int -> Unique
    mkPreludeTyConUnique Int
    86

    dictTyConKey :: Unique
    dictTyConKey :: Unique
    dictTyConKey                            = Int -> Unique
    mkPreludeTyConUnique Int
    87

    -- Kind constructors
    liftedTypeKindTyConKey, unliftedTypeKindTyConKey,
      tYPETyConKey, cONSTRAINTTyConKey,
      liftedRepTyConKey, unliftedRepTyConKey,
      constraintKindTyConKey, levityTyConKey, runtimeRepTyConKey,
      vecCountTyConKey, vecElemTyConKey,
      zeroBitRepTyConKey, zeroBitTypeTyConKey :: Unique
    liftedTypeKindTyConKey :: Unique
    liftedTypeKindTyConKey                  = Int -> Unique
    mkPreludeTyConUnique Int
    88
    unliftedTypeKindTyConKey :: Unique
    unliftedTypeKindTyConKey                = Int -> Unique
    mkPreludeTyConUnique Int
    89
    tYPETyConKey :: Unique
    tYPETyConKey                            = Int -> Unique
    mkPreludeTyConUnique Int
    91
    cONSTRAINTTyConKey :: Unique
    cONSTRAINTTyConKey                      = Int -> Unique
    mkPreludeTyConUnique Int
    92
    constraintKindTyConKey :: Unique
    constraintKindTyConKey                  = Int -> Unique
    mkPreludeTyConUnique Int
    93
    levityTyConKey :: Unique
    levityTyConKey                          = Int -> Unique
    mkPreludeTyConUnique Int
    94
    runtimeRepTyConKey :: Unique
    runtimeRepTyConKey                      = Int -> Unique
    mkPreludeTyConUnique Int
    95
    vecCountTyConKey :: Unique
    vecCountTyConKey                        = Int -> Unique
    mkPreludeTyConUnique Int
    96
    vecElemTyConKey :: Unique
    vecElemTyConKey                         = Int -> Unique
    mkPreludeTyConUnique Int
    97
    liftedRepTyConKey :: Unique
    liftedRepTyConKey                       = Int -> Unique
    mkPreludeTyConUnique Int
    98
    unliftedRepTyConKey :: Unique
    unliftedRepTyConKey                     = Int -> Unique
    mkPreludeTyConUnique Int
    99
    zeroBitRepTyConKey :: Unique
    zeroBitRepTyConKey                         = Int -> Unique
    mkPreludeTyConUnique Int
    100
    zeroBitTypeTyConKey :: Unique
    zeroBitTypeTyConKey                        = Int -> Unique
    mkPreludeTyConUnique Int
    101

    pluginTyConKey, frontendPluginTyConKey :: Unique
    pluginTyConKey :: Unique
    pluginTyConKey                          = Int -> Unique
    mkPreludeTyConUnique Int
    102
    frontendPluginTyConKey :: Unique
    frontendPluginTyConKey                  = Int -> Unique
    mkPreludeTyConUnique Int
    103

    trTyConTyConKey, trModuleTyConKey, trNameTyConKey,
      kindRepTyConKey, typeLitSortTyConKey :: Unique
    trTyConTyConKey :: Unique
    trTyConTyConKey                         = Int -> Unique
    mkPreludeTyConUnique Int
    104
    trModuleTyConKey :: Unique
    trModuleTyConKey                        = Int -> Unique
    mkPreludeTyConUnique Int
    105
    trNameTyConKey :: Unique
    trNameTyConKey                          = Int -> Unique
    mkPreludeTyConUnique Int
    106
    kindRepTyConKey :: Unique
    kindRepTyConKey                         = Int -> Unique
    mkPreludeTyConUnique Int
    107
    typeLitSortTyConKey :: Unique
    typeLitSortTyConKey                     = Int -> Unique
    mkPreludeTyConUnique Int
    108

    -- Generics (Unique keys)
    v1TyConKey, u1TyConKey, par1TyConKey, rec1TyConKey,
      k1TyConKey, m1TyConKey, sumTyConKey, prodTyConKey,
      compTyConKey, rTyConKey, dTyConKey,
      cTyConKey, sTyConKey, rec0TyConKey,
      d1TyConKey, c1TyConKey, s1TyConKey,
      repTyConKey, rep1TyConKey, uRecTyConKey,
      uAddrTyConKey, uCharTyConKey, uDoubleTyConKey,
      uFloatTyConKey, uIntTyConKey, uWordTyConKey :: Unique

    v1TyConKey :: Unique
    v1TyConKey    = Int -> Unique
    mkPreludeTyConUnique Int
    135
    u1TyConKey :: Unique
    u1TyConKey    = Int -> Unique
    mkPreludeTyConUnique Int
    136
    par1TyConKey :: Unique
    par1TyConKey  = Int -> Unique
    mkPreludeTyConUnique Int
    137
    rec1TyConKey :: Unique
    rec1TyConKey  = Int -> Unique
    mkPreludeTyConUnique Int
    138
    k1TyConKey :: Unique
    k1TyConKey    = Int -> Unique
    mkPreludeTyConUnique Int
    139
    m1TyConKey :: Unique
    m1TyConKey    = Int -> Unique
    mkPreludeTyConUnique Int
    140

    sumTyConKey :: Unique
    sumTyConKey   = Int -> Unique
    mkPreludeTyConUnique Int
    141
    prodTyConKey :: Unique
    prodTyConKey  = Int -> Unique
    mkPreludeTyConUnique Int
    142
    compTyConKey :: Unique
    compTyConKey  = Int -> Unique
    mkPreludeTyConUnique Int
    143

    rTyConKey :: Unique
    rTyConKey = Int -> Unique
    mkPreludeTyConUnique Int
    144
    dTyConKey :: Unique
    dTyConKey = Int -> Unique
    mkPreludeTyConUnique Int
    146
    cTyConKey :: Unique
    cTyConKey = Int -> Unique
    mkPreludeTyConUnique Int
    147
    sTyConKey :: Unique
    sTyConKey = Int -> Unique
    mkPreludeTyConUnique Int
    148

    rec0TyConKey :: Unique
    rec0TyConKey  = Int -> Unique
    mkPreludeTyConUnique Int
    149
    d1TyConKey :: Unique
    d1TyConKey    = Int -> Unique
    mkPreludeTyConUnique Int
    151
    c1TyConKey :: Unique
    c1TyConKey    = Int -> Unique
    mkPreludeTyConUnique Int
    152
    s1TyConKey :: Unique
    s1TyConKey    = Int -> Unique
    mkPreludeTyConUnique Int
    153

    repTyConKey :: Unique
    repTyConKey  = Int -> Unique
    mkPreludeTyConUnique Int
    155
    rep1TyConKey :: Unique
    rep1TyConKey = Int -> Unique
    mkPreludeTyConUnique Int
    156

    uRecTyConKey :: Unique
    uRecTyConKey    = Int -> Unique
    mkPreludeTyConUnique Int
    157
    uAddrTyConKey :: Unique
    uAddrTyConKey   = Int -> Unique
    mkPreludeTyConUnique Int
    158
    uCharTyConKey :: Unique
    uCharTyConKey   = Int -> Unique
    mkPreludeTyConUnique Int
    159
    uDoubleTyConKey :: Unique
    uDoubleTyConKey = Int -> Unique
    mkPreludeTyConUnique Int
    160
    uFloatTyConKey :: Unique
    uFloatTyConKey  = Int -> Unique
    mkPreludeTyConUnique Int
    161
    uIntTyConKey :: Unique
    uIntTyConKey    = Int -> Unique
    mkPreludeTyConUnique Int
    162
    uWordTyConKey :: Unique
    uWordTyConKey   = Int -> Unique
    mkPreludeTyConUnique Int
    163

    -- "Unsatisfiable" constraint
    unsatisfiableClassNameKey :: Unique
    unsatisfiableClassNameKey :: Unique
    unsatisfiableClassNameKey = Int -> Unique
    mkPreludeTyConUnique Int
    170

    anyTyConKey :: Unique
    anyTyConKey :: Unique
    anyTyConKey = Int -> Unique
    mkPreludeTyConUnique Int
    171

    zonkAnyTyConKey :: Unique
    zonkAnyTyConKey :: Unique
    zonkAnyTyConKey = Int -> Unique
    mkPreludeTyConUnique Int
    172

    -- Custom user type-errors
    errorMessageTypeErrorFamKey :: Unique
    errorMessageTypeErrorFamKey :: Unique
    errorMessageTypeErrorFamKey = Int -> Unique
    mkPreludeTyConUnique Int
    181

    coercibleTyConKey :: Unique
    coercibleTyConKey :: Unique
    coercibleTyConKey = Int -> Unique
    mkPreludeTyConUnique Int
    183

    proxyPrimTyConKey :: Unique
    proxyPrimTyConKey :: Unique
    proxyPrimTyConKey = Int -> Unique
    mkPreludeTyConUnique Int
    184

    specTyConKey :: Unique
    specTyConKey :: Unique
    specTyConKey = Int -> Unique
    mkPreludeTyConUnique Int
    185

    smallArrayPrimTyConKey :: Unique
    smallArrayPrimTyConKey        = Int -> Unique
    mkPreludeTyConUnique  Int
    187
    smallMutableArrayPrimTyConKey :: Unique
    smallMutableArrayPrimTyConKey = Int -> Unique
    mkPreludeTyConUnique  Int
    188

    staticPtrTyConKey  :: Unique
    staticPtrTyConKey :: Unique
    staticPtrTyConKey  = Int -> Unique
    mkPreludeTyConUnique Int
    189

    staticPtrInfoTyConKey :: Unique
    staticPtrInfoTyConKey :: Unique
    staticPtrInfoTyConKey = Int -> Unique
    mkPreludeTyConUnique Int
    190

    callStackTyConKey :: Unique
    callStackTyConKey :: Unique
    callStackTyConKey = Int -> Unique
    mkPreludeTyConUnique Int
    191

    -- Typeables
    typeRepTyConKey, someTypeRepTyConKey, someTypeRepDataConKey :: Unique
    typeRepTyConKey :: Unique
    typeRepTyConKey       = Int -> Unique
    mkPreludeTyConUnique Int
    192
    someTypeRepTyConKey :: Unique
    someTypeRepTyConKey   = Int -> Unique
    mkPreludeTyConUnique Int
    193
    someTypeRepDataConKey :: Unique
    someTypeRepDataConKey = Int -> Unique
    mkPreludeTyConUnique Int
    194

    typeSymbolAppendFamNameKey :: Unique
    typeSymbolAppendFamNameKey :: Unique
    typeSymbolAppendFamNameKey = Int -> Unique
    mkPreludeTyConUnique Int
    195

    -- Unsafe equality
    unsafeEqualityTyConKey :: Unique
    unsafeEqualityTyConKey :: Unique
    unsafeEqualityTyConKey = Int -> Unique
    mkPreludeTyConUnique Int
    196

    -- Linear types
    multiplicityTyConKey :: Unique
    multiplicityTyConKey :: Unique
    multiplicityTyConKey = Int -> Unique
    mkPreludeTyConUnique Int
    197

    unrestrictedFunTyConKey :: Unique
    unrestrictedFunTyConKey :: Unique
    unrestrictedFunTyConKey = Int -> Unique
    mkPreludeTyConUnique Int
    198

    multMulTyConKey :: Unique
    multMulTyConKey :: Unique
    multMulTyConKey = Int -> Unique
    mkPreludeTyConUnique Int
    199

    ---------------- Template Haskell -------------------
    --      GHC.Builtin.Names.TH: USES TyConUniques 200-299
    -----------------------------------------------------

    ----------------------- SIMD ------------------------
    --      USES TyConUniques 300-399
    -----------------------------------------------------

    #include "primop-vector-uniques.hs-incl"

    ------------- Type-level Symbol, Nat, Char ----------
    --      USES TyConUniques 400-499
    -----------------------------------------------------
    typeSymbolKindConNameKey, typeCharKindConNameKey,
      typeNatAddTyFamNameKey, typeNatMulTyFamNameKey, typeNatExpTyFamNameKey,
      typeNatSubTyFamNameKey
      , typeSymbolCmpTyFamNameKey, typeNatCmpTyFamNameKey, typeCharCmpTyFamNameKey
      , typeLeqCharTyFamNameKey
      , typeNatDivTyFamNameKey
      , typeNatModTyFamNameKey
      , typeNatLogTyFamNameKey
      , typeConsSymbolTyFamNameKey, typeUnconsSymbolTyFamNameKey
      , typeCharToNatTyFamNameKey, typeNatToCharTyFamNameKey
      :: Unique
    typeSymbolKindConNameKey :: Unique
    typeSymbolKindConNameKey  = Int -> Unique
    mkPreludeTyConUnique Int
    400
    typeCharKindConNameKey :: Unique
    typeCharKindConNameKey    = Int -> Unique
    mkPreludeTyConUnique Int
    401
    typeNatAddTyFamNameKey :: Unique
    typeNatAddTyFamNameKey    = Int -> Unique
    mkPreludeTyConUnique Int
    402
    typeNatMulTyFamNameKey :: Unique
    typeNatMulTyFamNameKey    = Int -> Unique
    mkPreludeTyConUnique Int
    403
    typeNatExpTyFamNameKey :: Unique
    typeNatExpTyFamNameKey    = Int -> Unique
    mkPreludeTyConUnique Int
    404
    typeNatSubTyFamNameKey :: Unique
    typeNatSubTyFamNameKey    = Int -> Unique
    mkPreludeTyConUnique Int
    405
    typeSymbolCmpTyFamNameKey :: Unique
    typeSymbolCmpTyFamNameKey = Int -> Unique
    mkPreludeTyConUnique Int
    406
    typeNatCmpTyFamNameKey :: Unique
    typeNatCmpTyFamNameKey    = Int -> Unique
    mkPreludeTyConUnique Int
    407
    typeCharCmpTyFamNameKey :: Unique
    typeCharCmpTyFamNameKey   = Int -> Unique
    mkPreludeTyConUnique Int
    408
    typeLeqCharTyFamNameKey :: Unique
    typeLeqCharTyFamNameKey   = Int -> Unique
    mkPreludeTyConUnique Int
    409
    typeNatDivTyFamNameKey :: Unique
    typeNatDivTyFamNameKey  = Int -> Unique
    mkPreludeTyConUnique Int
    410
    typeNatModTyFamNameKey :: Unique
    typeNatModTyFamNameKey  = Int -> Unique
    mkPreludeTyConUnique Int
    411
    typeNatLogTyFamNameKey :: Unique
    typeNatLogTyFamNameKey  = Int -> Unique
    mkPreludeTyConUnique Int
    412
    typeConsSymbolTyFamNameKey :: Unique
    typeConsSymbolTyFamNameKey = Int -> Unique
    mkPreludeTyConUnique Int
    413
    typeUnconsSymbolTyFamNameKey :: Unique
    typeUnconsSymbolTyFamNameKey = Int -> Unique
    mkPreludeTyConUnique Int
    414
    typeCharToNatTyFamNameKey :: Unique
    typeCharToNatTyFamNameKey = Int -> Unique
    mkPreludeTyConUnique Int
    415
    typeNatToCharTyFamNameKey :: Unique
    typeNatToCharTyFamNameKey = Int -> Unique
    mkPreludeTyConUnique Int
    416
    constPtrTyConKey :: Unique
    constPtrTyConKey = Int -> Unique
    mkPreludeTyConUnique Int
    417

    jsvalTyConKey :: Unique
    jsvalTyConKey = Int -> Unique
    mkPreludeTyConUnique Int
    418

    exceptionContextTyConKey :: Unique
    exceptionContextTyConKey :: Unique
    exceptionContextTyConKey = Int -> Unique
    mkPreludeTyConUnique Int
    420

    {-
    ************************************************************************
    *                                                                      *
    \subsubsection[Uniques-prelude-DataCons]{@Uniques@ for wired-in @DataCons@}
    *                                                                      *
    ************************************************************************
    -}

    charDataConKey, consDataConKey, doubleDataConKey, falseDataConKey,
        floatDataConKey, intDataConKey, nilDataConKey,
        ratioDataConKey, stableNameDataConKey, trueDataConKey, wordDataConKey,
        word8DataConKey, ioDataConKey, heqDataConKey,
        eqDataConKey, nothingDataConKey, justDataConKey :: Unique

    charDataConKey :: Unique
    charDataConKey                          = Int -> Unique
    mkPreludeDataConUnique  Int
    1
    consDataConKey :: Unique
    consDataConKey                          = Int -> Unique
    mkPreludeDataConUnique  Int
    2
    doubleDataConKey :: Unique
    doubleDataConKey                        = Int -> Unique
    mkPreludeDataConUnique  Int
    3
    falseDataConKey :: Unique
    falseDataConKey                         = Int -> Unique
    mkPreludeDataConUnique  Int
    4
    floatDataConKey :: Unique
    floatDataConKey                         = Int -> Unique
    mkPreludeDataConUnique  Int
    5
    intDataConKey :: Unique
    intDataConKey                           = Int -> Unique
    mkPreludeDataConUnique  Int
    6
    nothingDataConKey :: Unique
    nothingDataConKey                       = Int -> Unique
    mkPreludeDataConUnique  Int
    7
    justDataConKey :: Unique
    justDataConKey                          = Int -> Unique
    mkPreludeDataConUnique  Int
    8
    eqDataConKey :: Unique
    eqDataConKey                            = Int -> Unique
    mkPreludeDataConUnique  Int
    9
    nilDataConKey :: Unique
    nilDataConKey                           = Int -> Unique
    mkPreludeDataConUnique Int
    10
    ratioDataConKey :: Unique
    ratioDataConKey                         = Int -> Unique
    mkPreludeDataConUnique Int
    11
    word8DataConKey :: Unique
    word8DataConKey                         = Int -> Unique
    mkPreludeDataConUnique Int
    12
    stableNameDataConKey :: Unique
    stableNameDataConKey                    = Int -> Unique
    mkPreludeDataConUnique Int
    13
    trueDataConKey :: Unique
    trueDataConKey                          = Int -> Unique
    mkPreludeDataConUnique Int
    14
    wordDataConKey :: Unique
    wordDataConKey                          = Int -> Unique
    mkPreludeDataConUnique Int
    15
    ioDataConKey :: Unique
    ioDataConKey                            = Int -> Unique
    mkPreludeDataConUnique Int
    16
    heqDataConKey :: Unique
    heqDataConKey                           = Int -> Unique
    mkPreludeDataConUnique Int
    18

    -- Generic data constructors
    crossDataConKey, inlDataConKey, inrDataConKey, genUnitDataConKey :: Unique
    crossDataConKey :: Unique
    crossDataConKey                         = Int -> Unique
    mkPreludeDataConUnique Int
    20
    inlDataConKey :: Unique
    inlDataConKey                           = Int -> Unique
    mkPreludeDataConUnique Int
    21
    inrDataConKey :: Unique
    inrDataConKey                           = Int -> Unique
    mkPreludeDataConUnique Int
    22
    genUnitDataConKey :: Unique
    genUnitDataConKey                       = Int -> Unique
    mkPreludeDataConUnique Int
    23

    leftDataConKey, rightDataConKey :: Unique
    leftDataConKey :: Unique
    leftDataConKey                          = Int -> Unique
    mkPreludeDataConUnique Int
    25
    rightDataConKey :: Unique
    rightDataConKey                         = Int -> Unique
    mkPreludeDataConUnique Int
    26

    ordLTDataConKey, ordEQDataConKey, ordGTDataConKey :: Unique
    ordLTDataConKey :: Unique
    ordLTDataConKey                         = Int -> Unique
    mkPreludeDataConUnique Int
    27
    ordEQDataConKey :: Unique
    ordEQDataConKey                         = Int -> Unique
    mkPreludeDataConUnique Int
    28
    ordGTDataConKey :: Unique
    ordGTDataConKey                         = Int -> Unique
    mkPreludeDataConUnique Int
    29

    mkDictDataConKey :: Unique
    mkDictDataConKey :: Unique
    mkDictDataConKey                        = Int -> Unique
    mkPreludeDataConUnique Int
    30

    coercibleDataConKey :: Unique
    coercibleDataConKey :: Unique
    coercibleDataConKey                     = Int -> Unique
    mkPreludeDataConUnique Int
    32

    staticPtrDataConKey :: Unique
    staticPtrDataConKey :: Unique
    staticPtrDataConKey                     = Int -> Unique
    mkPreludeDataConUnique Int
    33

    staticPtrInfoDataConKey :: Unique
    staticPtrInfoDataConKey :: Unique
    staticPtrInfoDataConKey                 = Int -> Unique
    mkPreludeDataConUnique Int
    34

    fingerprintDataConKey :: Unique
    fingerprintDataConKey :: Unique
    fingerprintDataConKey                   = Int -> Unique
    mkPreludeDataConUnique Int
    35

    srcLocDataConKey :: Unique
    srcLocDataConKey :: Unique
    srcLocDataConKey                        = Int -> Unique
    mkPreludeDataConUnique Int
    37

    trTyConDataConKey, trModuleDataConKey,
      trNameSDataConKey, trNameDDataConKey,
      trGhcPrimModuleKey :: Unique
    trTyConDataConKey :: Unique
    trTyConDataConKey                       = Int -> Unique
    mkPreludeDataConUnique Int
    41
    trModuleDataConKey :: Unique
    trModuleDataConKey                      = Int -> Unique
    mkPreludeDataConUnique Int
    43
    trNameSDataConKey :: Unique
    trNameSDataConKey                       = Int -> Unique
    mkPreludeDataConUnique Int
    45
    trNameDDataConKey :: Unique
    trNameDDataConKey                       = Int -> Unique
    mkPreludeDataConUnique Int
    46
    trGhcPrimModuleKey :: Unique
    trGhcPrimModuleKey                      = Int -> Unique
    mkPreludeDataConUnique Int
    47

    typeErrorTextDataConKey,
      typeErrorAppendDataConKey,
      typeErrorVAppendDataConKey,
      typeErrorShowTypeDataConKey
      :: Unique
    typeErrorTextDataConKey :: Unique
    typeErrorTextDataConKey                 = Int -> Unique
    mkPreludeDataConUnique Int
    50
    typeErrorAppendDataConKey :: Unique
    typeErrorAppendDataConKey               = Int -> Unique
    mkPreludeDataConUnique Int
    51
    typeErrorVAppendDataConKey :: Unique
    typeErrorVAppendDataConKey              = Int -> Unique
    mkPreludeDataConUnique Int
    52
    typeErrorShowTypeDataConKey :: Unique
    typeErrorShowTypeDataConKey             = Int -> Unique
    mkPreludeDataConUnique Int
    53

    prefixIDataConKey, infixIDataConKey, leftAssociativeDataConKey,
        rightAssociativeDataConKey, notAssociativeDataConKey,
        sourceUnpackDataConKey, sourceNoUnpackDataConKey,
        noSourceUnpackednessDataConKey, sourceLazyDataConKey,
        sourceStrictDataConKey, noSourceStrictnessDataConKey,
        decidedLazyDataConKey, decidedStrictDataConKey, decidedUnpackDataConKey,
        metaDataDataConKey, metaConsDataConKey, metaSelDataConKey :: Unique
    prefixIDataConKey :: Unique
    prefixIDataConKey                       = Int -> Unique
    mkPreludeDataConUnique Int
    54
    infixIDataConKey :: Unique
    infixIDataConKey                        = Int -> Unique
    mkPreludeDataConUnique Int
    55
    leftAssociativeDataConKey :: Unique
    leftAssociativeDataConKey               = Int -> Unique
    mkPreludeDataConUnique Int
    56
    rightAssociativeDataConKey :: Unique
    rightAssociativeDataConKey              = Int -> Unique
    mkPreludeDataConUnique Int
    57
    notAssociativeDataConKey :: Unique
    notAssociativeDataConKey                = Int -> Unique
    mkPreludeDataConUnique Int
    58
    sourceUnpackDataConKey :: Unique
    sourceUnpackDataConKey                  = Int -> Unique
    mkPreludeDataConUnique Int
    59
    sourceNoUnpackDataConKey :: Unique
    sourceNoUnpackDataConKey                = Int -> Unique
    mkPreludeDataConUnique Int
    60
    noSourceUnpackednessDataConKey :: Unique
    noSourceUnpackednessDataConKey          = Int -> Unique
    mkPreludeDataConUnique Int
    61
    sourceLazyDataConKey :: Unique
    sourceLazyDataConKey                    = Int -> Unique
    mkPreludeDataConUnique Int
    62
    sourceStrictDataConKey :: Unique
    sourceStrictDataConKey                  = Int -> Unique
    mkPreludeDataConUnique Int
    63
    noSourceStrictnessDataConKey :: Unique
    noSourceStrictnessDataConKey            = Int -> Unique
    mkPreludeDataConUnique Int
    64
    decidedLazyDataConKey :: Unique
    decidedLazyDataConKey                   = Int -> Unique
    mkPreludeDataConUnique Int
    65
    decidedStrictDataConKey :: Unique
    decidedStrictDataConKey                 = Int -> Unique
    mkPreludeDataConUnique Int
    66
    decidedUnpackDataConKey :: Unique
    decidedUnpackDataConKey                 = Int -> Unique
    mkPreludeDataConUnique Int
    67
    metaDataDataConKey :: Unique
    metaDataDataConKey                      = Int -> Unique
    mkPreludeDataConUnique Int
    68
    metaConsDataConKey :: Unique
    metaConsDataConKey                      = Int -> Unique
    mkPreludeDataConUnique Int
    69
    metaSelDataConKey :: Unique
    metaSelDataConKey                       = Int -> Unique
    mkPreludeDataConUnique Int
    70

    vecRepDataConKey, sumRepDataConKey,
      tupleRepDataConKey, boxedRepDataConKey :: Unique
    vecRepDataConKey :: Unique
    vecRepDataConKey                        = Int -> Unique
    mkPreludeDataConUnique Int
    71
    tupleRepDataConKey :: Unique
    tupleRepDataConKey                      = Int -> Unique
    mkPreludeDataConUnique Int
    72
    sumRepDataConKey :: Unique
    sumRepDataConKey                        = Int -> Unique
    mkPreludeDataConUnique Int
    73
    boxedRepDataConKey :: Unique
    boxedRepDataConKey                      = Int -> Unique
    mkPreludeDataConUnique Int
    74

    boxedRepDataConTyConKey, tupleRepDataConTyConKey :: Unique
    -- A promoted data constructors (i.e. a TyCon) has
    -- the same key as the data constructor itself
    boxedRepDataConTyConKey :: Unique
    boxedRepDataConTyConKey = Unique
    boxedRepDataConKey
    tupleRepDataConTyConKey :: Unique
    tupleRepDataConTyConKey = Unique
    tupleRepDataConKey

    -- See Note [Wiring in RuntimeRep] in GHC.Builtin.Types
    -- Includes all nullary-data-constructor reps. Does not
    -- include BoxedRep, VecRep, SumRep, TupleRep.
    runtimeRepSimpleDataConKeys :: [Unique]
    runtimeRepSimpleDataConKeys :: [Unique]
    runtimeRepSimpleDataConKeys
      = (Int -> Unique) -> [Int] -> [Unique]
    forall a b. (a -> b) -> [a] -> [b]
    map Int -> Unique
    mkPreludeDataConUnique [Int
    75..Int
    87]

    liftedDataConKey,unliftedDataConKey :: Unique
    liftedDataConKey :: Unique
    liftedDataConKey = Int -> Unique
    mkPreludeDataConUnique Int
    88
    unliftedDataConKey :: Unique
    unliftedDataConKey = Int -> Unique
    mkPreludeDataConUnique Int
    89

    -- See Note [Wiring in RuntimeRep] in GHC.Builtin.Types
    -- VecCount
    vecCountDataConKeys :: [Unique]
    vecCountDataConKeys :: [Unique]
    vecCountDataConKeys = (Int -> Unique) -> [Int] -> [Unique]
    forall a b. (a -> b) -> [a] -> [b]
    map Int -> Unique
    mkPreludeDataConUnique [Int
    90..Int
    95]

    -- See Note [Wiring in RuntimeRep] in GHC.Builtin.Types
    -- VecElem
    vecElemDataConKeys :: [Unique]
    vecElemDataConKeys :: [Unique]
    vecElemDataConKeys = (Int -> Unique) -> [Int] -> [Unique]
    forall a b. (a -> b) -> [a] -> [b]
    map Int -> Unique
    mkPreludeDataConUnique [Int
    96..Int
    105]

    -- Typeable things
    kindRepTyConAppDataConKey, kindRepVarDataConKey, kindRepAppDataConKey,
        kindRepFunDataConKey, kindRepTYPEDataConKey,
        kindRepTypeLitSDataConKey, kindRepTypeLitDDataConKey
        :: Unique
    kindRepTyConAppDataConKey :: Unique
    kindRepTyConAppDataConKey = Int -> Unique
    mkPreludeDataConUnique Int
    106
    kindRepVarDataConKey :: Unique
    kindRepVarDataConKey      = Int -> Unique
    mkPreludeDataConUnique Int
    107
    kindRepAppDataConKey :: Unique
    kindRepAppDataConKey      = Int -> Unique
    mkPreludeDataConUnique Int
    108
    kindRepFunDataConKey :: Unique
    kindRepFunDataConKey      = Int -> Unique
    mkPreludeDataConUnique Int
    109
    kindRepTYPEDataConKey :: Unique
    kindRepTYPEDataConKey     = Int -> Unique
    mkPreludeDataConUnique Int
    110
    kindRepTypeLitSDataConKey :: Unique
    kindRepTypeLitSDataConKey = Int -> Unique
    mkPreludeDataConUnique Int
    111
    kindRepTypeLitDDataConKey :: Unique
    kindRepTypeLitDDataConKey = Int -> Unique
    mkPreludeDataConUnique Int
    112

    typeLitSymbolDataConKey, typeLitNatDataConKey, typeLitCharDataConKey :: Unique
    typeLitSymbolDataConKey :: Unique
    typeLitSymbolDataConKey   = Int -> Unique
    mkPreludeDataConUnique Int
    113
    typeLitNatDataConKey :: Unique
    typeLitNatDataConKey      = Int -> Unique
    mkPreludeDataConUnique Int
    114
    typeLitCharDataConKey :: Unique
    typeLitCharDataConKey     = Int -> Unique
    mkPreludeDataConUnique Int
    115

    -- Unsafe equality
    unsafeReflDataConKey :: Unique
    unsafeReflDataConKey :: Unique
    unsafeReflDataConKey      = Int -> Unique
    mkPreludeDataConUnique Int
    116

    -- Multiplicity

    oneDataConKey, manyDataConKey :: Unique
    oneDataConKey :: Unique
    oneDataConKey = Int -> Unique
    mkPreludeDataConUnique Int
    117
    manyDataConKey :: Unique
    manyDataConKey = Int -> Unique
    mkPreludeDataConUnique Int
    118

    -- ghc-bignum
    integerISDataConKey, integerINDataConKey, integerIPDataConKey,
       naturalNSDataConKey, naturalNBDataConKey :: Unique
    integerISDataConKey :: Unique
    integerISDataConKey       = Int -> Unique
    mkPreludeDataConUnique Int
    120
    integerINDataConKey :: Unique
    integerINDataConKey       = Int -> Unique
    mkPreludeDataConUnique Int
    121
    integerIPDataConKey :: Unique
    integerIPDataConKey       = Int -> Unique
    mkPreludeDataConUnique Int
    122
    naturalNSDataConKey :: Unique
    naturalNSDataConKey       = Int -> Unique
    mkPreludeDataConUnique Int
    123
    naturalNBDataConKey :: Unique
    naturalNBDataConKey       = Int -> Unique
    mkPreludeDataConUnique Int
    124

    ---------------- Template Haskell -------------------
    --      GHC.Builtin.Names.TH: USES DataUniques 200-250
    -----------------------------------------------------

    {-
    ************************************************************************
    *                                                                      *
    \subsubsection[Uniques-prelude-Ids]{@Uniques@ for wired-in @Ids@ (except @DataCons@)}
    *                                                                      *
    ************************************************************************
    -}

    wildCardKey, absentErrorIdKey, absentConstraintErrorIdKey, augmentIdKey, appendIdKey,
        buildIdKey, foldrIdKey, recSelErrorIdKey,
        seqIdKey, eqStringIdKey,
        noMethodBindingErrorIdKey, nonExhaustiveGuardsErrorIdKey,
        impossibleErrorIdKey, impossibleConstraintErrorIdKey,
        patErrorIdKey, voidPrimIdKey,
        realWorldPrimIdKey, recConErrorIdKey,
        unpackCStringUtf8IdKey, unpackCStringAppendUtf8IdKey, unpackCStringFoldrUtf8IdKey,
        unpackCStringIdKey, unpackCStringAppendIdKey, unpackCStringFoldrIdKey,
        typeErrorIdKey, divIntIdKey, modIntIdKey,
        absentSumFieldErrorIdKey, cstringLengthIdKey
        :: Unique

    wildCardKey :: Unique
    wildCardKey                    = Int -> Unique
    mkPreludeMiscIdUnique  Int
    0  -- See Note [WildCard binders]
    absentErrorIdKey :: Unique
    absentErrorIdKey               = Int -> Unique
    mkPreludeMiscIdUnique  Int
    1
    absentConstraintErrorIdKey :: Unique
    absentConstraintErrorIdKey     = Int -> Unique
    mkPreludeMiscIdUnique  Int
    2
    augmentIdKey :: Unique
    augmentIdKey                   = Int -> Unique
    mkPreludeMiscIdUnique  Int
    3
    appendIdKey :: Unique
    appendIdKey                    = Int -> Unique
    mkPreludeMiscIdUnique  Int
    4
    buildIdKey :: Unique
    buildIdKey                     = Int -> Unique
    mkPreludeMiscIdUnique  Int
    5
    foldrIdKey :: Unique
    foldrIdKey                     = Int -> Unique
    mkPreludeMiscIdUnique  Int
    6
    recSelErrorIdKey :: Unique
    recSelErrorIdKey               = Int -> Unique
    mkPreludeMiscIdUnique  Int
    7
    seqIdKey :: Unique
    seqIdKey                       = Int -> Unique
    mkPreludeMiscIdUnique  Int
    8
    absentSumFieldErrorIdKey :: Unique
    absentSumFieldErrorIdKey       = Int -> Unique
    mkPreludeMiscIdUnique  Int
    9
    eqStringIdKey :: Unique
    eqStringIdKey                  = Int -> Unique
    mkPreludeMiscIdUnique Int
    10
    noMethodBindingErrorIdKey :: Unique
    noMethodBindingErrorIdKey      = Int -> Unique
    mkPreludeMiscIdUnique Int
    11
    nonExhaustiveGuardsErrorIdKey :: Unique
    nonExhaustiveGuardsErrorIdKey  = Int -> Unique
    mkPreludeMiscIdUnique Int
    12
    impossibleErrorIdKey :: Unique
    impossibleErrorIdKey           = Int -> Unique
    mkPreludeMiscIdUnique Int
    13
    impossibleConstraintErrorIdKey :: Unique
    impossibleConstraintErrorIdKey = Int -> Unique
    mkPreludeMiscIdUnique Int
    14
    patErrorIdKey :: Unique
    patErrorIdKey                  = Int -> Unique
    mkPreludeMiscIdUnique Int
    15
    realWorldPrimIdKey :: Unique
    realWorldPrimIdKey             = Int -> Unique
    mkPreludeMiscIdUnique Int
    16
    recConErrorIdKey :: Unique
    recConErrorIdKey               = Int -> Unique
    mkPreludeMiscIdUnique Int
    17

    unpackCStringUtf8IdKey :: Unique
    unpackCStringUtf8IdKey        = Int -> Unique
    mkPreludeMiscIdUnique Int
    18
    unpackCStringAppendUtf8IdKey :: Unique
    unpackCStringAppendUtf8IdKey  = Int -> Unique
    mkPreludeMiscIdUnique Int
    19
    unpackCStringFoldrUtf8IdKey :: Unique
    unpackCStringFoldrUtf8IdKey   = Int -> Unique
    mkPreludeMiscIdUnique Int
    20

    unpackCStringIdKey :: Unique
    unpackCStringIdKey            = Int -> Unique
    mkPreludeMiscIdUnique Int
    21
    unpackCStringAppendIdKey :: Unique
    unpackCStringAppendIdKey      = Int -> Unique
    mkPreludeMiscIdUnique Int
    22
    unpackCStringFoldrIdKey :: Unique
    unpackCStringFoldrIdKey       = Int -> Unique
    mkPreludeMiscIdUnique Int
    23

    voidPrimIdKey :: Unique
    voidPrimIdKey                 = Int -> Unique
    mkPreludeMiscIdUnique Int
    24
    typeErrorIdKey :: Unique
    typeErrorIdKey                = Int -> Unique
    mkPreludeMiscIdUnique Int
    25
    divIntIdKey :: Unique
    divIntIdKey                   = Int -> Unique
    mkPreludeMiscIdUnique Int
    26
    modIntIdKey :: Unique
    modIntIdKey                   = Int -> Unique
    mkPreludeMiscIdUnique Int
    27
    cstringLengthIdKey :: Unique
    cstringLengthIdKey            = Int -> Unique
    mkPreludeMiscIdUnique Int
    28

    concatIdKey, filterIdKey, zipIdKey,
        bindIOIdKey, returnIOIdKey, newStablePtrIdKey,
        printIdKey, failIOIdKey, nullAddrIdKey, voidArgIdKey,
        otherwiseIdKey, assertIdKey :: Unique
    concatIdKey :: Unique
    concatIdKey                   = Int -> Unique
    mkPreludeMiscIdUnique Int
    31
    filterIdKey :: Unique
    filterIdKey                   = Int -> Unique
    mkPreludeMiscIdUnique Int
    32
    zipIdKey :: Unique
    zipIdKey                      = Int -> Unique
    mkPreludeMiscIdUnique Int
    33
    bindIOIdKey :: Unique
    bindIOIdKey                   = Int -> Unique
    mkPreludeMiscIdUnique Int
    34
    returnIOIdKey :: Unique
    returnIOIdKey                 = Int -> Unique
    mkPreludeMiscIdUnique Int
    35
    newStablePtrIdKey :: Unique
    newStablePtrIdKey             = Int -> Unique
    mkPreludeMiscIdUnique Int
    36
    printIdKey :: Unique
    printIdKey                    = Int -> Unique
    mkPreludeMiscIdUnique Int
    37
    failIOIdKey :: Unique
    failIOIdKey                   = Int -> Unique
    mkPreludeMiscIdUnique Int
    38
    nullAddrIdKey :: Unique
    nullAddrIdKey                 = Int -> Unique
    mkPreludeMiscIdUnique Int
    39
    voidArgIdKey :: Unique
    voidArgIdKey                  = Int -> Unique
    mkPreludeMiscIdUnique Int
    40
    otherwiseIdKey :: Unique
    otherwiseIdKey                = Int -> Unique
    mkPreludeMiscIdUnique Int
    43
    assertIdKey :: Unique
    assertIdKey                   = Int -> Unique
    mkPreludeMiscIdUnique Int
    44

    leftSectionKey, rightSectionKey :: Unique
    leftSectionKey :: Unique
    leftSectionKey                = Int -> Unique
    mkPreludeMiscIdUnique Int
    45
    rightSectionKey :: Unique
    rightSectionKey               = Int -> Unique
    mkPreludeMiscIdUnique Int
    46

    rootMainKey, runMainKey :: Unique
    rootMainKey :: Unique
    rootMainKey                   = Int -> Unique
    mkPreludeMiscIdUnique Int
    101
    runMainKey :: Unique
    runMainKey                    = Int -> Unique
    mkPreludeMiscIdUnique Int
    102

    thenIOIdKey, lazyIdKey, assertErrorIdKey, oneShotKey, runRWKey, seqHashKey :: Unique
    thenIOIdKey :: Unique
    thenIOIdKey                   = Int -> Unique
    mkPreludeMiscIdUnique Int
    103
    lazyIdKey :: Unique
    lazyIdKey                     = Int -> Unique
    mkPreludeMiscIdUnique Int
    104
    assertErrorIdKey :: Unique
    assertErrorIdKey              = Int -> Unique
    mkPreludeMiscIdUnique Int
    105
    oneShotKey :: Unique
    oneShotKey                    = Int -> Unique
    mkPreludeMiscIdUnique Int
    106
    runRWKey :: Unique
    runRWKey                      = Int -> Unique
    mkPreludeMiscIdUnique Int
    107

    traceKey :: Unique
    traceKey :: Unique
    traceKey                      = Int -> Unique
    mkPreludeMiscIdUnique Int
    108

    nospecIdKey :: Unique
    nospecIdKey :: Unique
    nospecIdKey                   = Int -> Unique
    mkPreludeMiscIdUnique Int
    109

    inlineIdKey, noinlineIdKey, noinlineConstraintIdKey :: Unique
    inlineIdKey :: Unique
    inlineIdKey                   = Int -> Unique
    mkPreludeMiscIdUnique Int
    120
    -- see below

    mapIdKey, dollarIdKey, coercionTokenIdKey, considerAccessibleIdKey :: Unique
    mapIdKey :: Unique
    mapIdKey                = Int -> Unique
    mkPreludeMiscIdUnique Int
    121
    dollarIdKey :: Unique
    dollarIdKey             = Int -> Unique
    mkPreludeMiscIdUnique Int
    123
    coercionTokenIdKey :: Unique
    coercionTokenIdKey      = Int -> Unique
    mkPreludeMiscIdUnique Int
    124
    considerAccessibleIdKey :: Unique
    considerAccessibleIdKey = Int -> Unique
    mkPreludeMiscIdUnique Int
    125
    noinlineIdKey :: Unique
    noinlineIdKey           = Int -> Unique
    mkPreludeMiscIdUnique Int
    126
    noinlineConstraintIdKey :: Unique
    noinlineConstraintIdKey = Int -> Unique
    mkPreludeMiscIdUnique Int
    127

    integerToFloatIdKey, integerToDoubleIdKey, naturalToFloatIdKey, naturalToDoubleIdKey :: Unique
    integerToFloatIdKey :: Unique
    integerToFloatIdKey    = Int -> Unique
    mkPreludeMiscIdUnique Int
    128
    integerToDoubleIdKey :: Unique
    integerToDoubleIdKey   = Int -> Unique
    mkPreludeMiscIdUnique Int
    129
    naturalToFloatIdKey :: Unique
    naturalToFloatIdKey    = Int -> Unique
    mkPreludeMiscIdUnique Int
    130
    naturalToDoubleIdKey :: Unique
    naturalToDoubleIdKey   = Int -> Unique
    mkPreludeMiscIdUnique Int
    131

    rationalToFloatIdKey, rationalToDoubleIdKey :: Unique
    rationalToFloatIdKey :: Unique
    rationalToFloatIdKey   = Int -> Unique
    mkPreludeMiscIdUnique Int
    132
    rationalToDoubleIdKey :: Unique
    rationalToDoubleIdKey  = Int -> Unique
    mkPreludeMiscIdUnique Int
    133

    seqHashKey :: Unique
    seqHashKey             = Int -> Unique
    mkPreludeMiscIdUnique Int
    134

    coerceKey :: Unique
    coerceKey :: Unique
    coerceKey                     = Int -> Unique
    mkPreludeMiscIdUnique Int
    157

    {-
    Certain class operations from Prelude classes.  They get their own
    uniques so we can look them up easily when we want to conjure them up
    during type checking.
    -}

    -- Just a placeholder for unbound variables produced by the renamer:
    unboundKey :: Unique
    unboundKey :: Unique
    unboundKey                    = Int -> Unique
    mkPreludeMiscIdUnique Int
    158

    fromIntegerClassOpKey, minusClassOpKey, fromRationalClassOpKey,
        enumFromClassOpKey, enumFromThenClassOpKey, enumFromToClassOpKey,
        enumFromThenToClassOpKey, eqClassOpKey, geClassOpKey, negateClassOpKey,
        bindMClassOpKey, thenMClassOpKey, returnMClassOpKey, fmapClassOpKey
        :: Unique
    fromIntegerClassOpKey :: Unique
    fromIntegerClassOpKey         = Int -> Unique
    mkPreludeMiscIdUnique Int
    160
    minusClassOpKey :: Unique
    minusClassOpKey               = Int -> Unique
    mkPreludeMiscIdUnique Int
    161
    fromRationalClassOpKey :: Unique
    fromRationalClassOpKey        = Int -> Unique
    mkPreludeMiscIdUnique Int
    162
    enumFromClassOpKey :: Unique
    enumFromClassOpKey            = Int -> Unique
    mkPreludeMiscIdUnique Int
    163
    enumFromThenClassOpKey :: Unique
    enumFromThenClassOpKey        = Int -> Unique
    mkPreludeMiscIdUnique Int
    164
    enumFromToClassOpKey :: Unique
    enumFromToClassOpKey          = Int -> Unique
    mkPreludeMiscIdUnique Int
    165
    enumFromThenToClassOpKey :: Unique
    enumFromThenToClassOpKey      = Int -> Unique
    mkPreludeMiscIdUnique Int
    166
    eqClassOpKey :: Unique
    eqClassOpKey                  = Int -> Unique
    mkPreludeMiscIdUnique Int
    167
    geClassOpKey :: Unique
    geClassOpKey                  = Int -> Unique
    mkPreludeMiscIdUnique Int
    168
    negateClassOpKey :: Unique
    negateClassOpKey              = Int -> Unique
    mkPreludeMiscIdUnique Int
    169
    bindMClassOpKey :: Unique
    bindMClassOpKey               = Int -> Unique
    mkPreludeMiscIdUnique Int
    171 -- (>>=)
    thenMClassOpKey :: Unique
    thenMClassOpKey               = Int -> Unique
    mkPreludeMiscIdUnique Int
    172 -- (>>)
    fmapClassOpKey :: Unique
    fmapClassOpKey                = Int -> Unique
    mkPreludeMiscIdUnique Int
    173
    returnMClassOpKey :: Unique
    returnMClassOpKey             = Int -> Unique
    mkPreludeMiscIdUnique Int
    174

    -- Recursive do notation
    mfixIdKey :: Unique
    mfixIdKey :: Unique
    mfixIdKey       = Int -> Unique
    mkPreludeMiscIdUnique Int
    175

    -- MonadFail operations
    failMClassOpKey :: Unique
    failMClassOpKey :: Unique
    failMClassOpKey = Int -> Unique
    mkPreludeMiscIdUnique Int
    176

    -- fromLabel
    fromLabelClassOpKey :: Unique
    fromLabelClassOpKey :: Unique
    fromLabelClassOpKey = Int -> Unique
    mkPreludeMiscIdUnique Int
    177

    -- Arrow notation
    arrAIdKey, composeAIdKey, firstAIdKey, appAIdKey, choiceAIdKey,
        loopAIdKey :: Unique
    arrAIdKey :: Unique
    arrAIdKey       = Int -> Unique
    mkPreludeMiscIdUnique Int
    180
    composeAIdKey :: Unique
    composeAIdKey   = Int -> Unique
    mkPreludeMiscIdUnique Int
    181 -- >>>
    firstAIdKey :: Unique
    firstAIdKey     = Int -> Unique
    mkPreludeMiscIdUnique Int
    182
    appAIdKey :: Unique
    appAIdKey       = Int -> Unique
    mkPreludeMiscIdUnique Int
    183
    choiceAIdKey :: Unique
    choiceAIdKey    = Int -> Unique
    mkPreludeMiscIdUnique Int
    184 --  |||
    loopAIdKey :: Unique
    loopAIdKey      = Int -> Unique
    mkPreludeMiscIdUnique Int
    185

    fromStringClassOpKey :: Unique
    fromStringClassOpKey :: Unique
    fromStringClassOpKey          = Int -> Unique
    mkPreludeMiscIdUnique Int
    186

    -- Annotation type checking
    toAnnotationWrapperIdKey :: Unique
    toAnnotationWrapperIdKey :: Unique
    toAnnotationWrapperIdKey      = Int -> Unique
    mkPreludeMiscIdUnique Int
    187

    -- Conversion functions
    fromIntegralIdKey, realToFracIdKey, toIntegerClassOpKey, toRationalClassOpKey :: Unique
    fromIntegralIdKey :: Unique
    fromIntegralIdKey    = Int -> Unique
    mkPreludeMiscIdUnique Int
    190
    realToFracIdKey :: Unique
    realToFracIdKey      = Int -> Unique
    mkPreludeMiscIdUnique Int
    191
    toIntegerClassOpKey :: Unique
    toIntegerClassOpKey  = Int -> Unique
    mkPreludeMiscIdUnique Int
    192
    toRationalClassOpKey :: Unique
    toRationalClassOpKey = Int -> Unique
    mkPreludeMiscIdUnique Int
    193

    -- Monad comprehensions
    guardMIdKey, liftMIdKey, mzipIdKey :: Unique
    guardMIdKey :: Unique
    guardMIdKey     = Int -> Unique
    mkPreludeMiscIdUnique Int
    194
    liftMIdKey :: Unique
    liftMIdKey      = Int -> Unique
    mkPreludeMiscIdUnique Int
    195
    mzipIdKey :: Unique
    mzipIdKey       = Int -> Unique
    mkPreludeMiscIdUnique Int
    196

    -- GHCi
    ghciStepIoMClassOpKey :: Unique
    ghciStepIoMClassOpKey :: Unique
    ghciStepIoMClassOpKey = Int -> Unique
    mkPreludeMiscIdUnique Int
    197

    -- Overloaded lists
    isListClassKey, fromListClassOpKey, fromListNClassOpKey, toListClassOpKey :: Unique
    isListClassKey :: Unique
    isListClassKey = Int -> Unique
    mkPreludeMiscIdUnique Int
    198
    fromListClassOpKey :: Unique
    fromListClassOpKey = Int -> Unique
    mkPreludeMiscIdUnique Int
    199
    fromListNClassOpKey :: Unique
    fromListNClassOpKey = Int -> Unique
    mkPreludeMiscIdUnique Int
    500
    toListClassOpKey :: Unique
    toListClassOpKey = Int -> Unique
    mkPreludeMiscIdUnique Int
    501

    proxyHashKey :: Unique
    proxyHashKey :: Unique
    proxyHashKey = Int -> Unique
    mkPreludeMiscIdUnique Int
    502

    ---------------- Template Haskell -------------------
    --      GHC.Builtin.Names.TH: USES IdUniques 200-499
    -----------------------------------------------------

    -- Used to make `Typeable` dictionaries
    mkTyConKey
      , mkTrTypeKey
      , mkTrConKey
      , mkTrAppKey
      , mkTrFunKey
      , typeNatTypeRepKey
      , typeSymbolTypeRepKey
      , typeCharTypeRepKey
      , typeRepIdKey
      :: Unique
    mkTyConKey :: Unique
    mkTyConKey            = Int -> Unique
    mkPreludeMiscIdUnique Int
    503
    mkTrTypeKey :: Unique
    mkTrTypeKey           = Int -> Unique
    mkPreludeMiscIdUnique Int
    504
    mkTrConKey :: Unique
    mkTrConKey            = Int -> Unique
    mkPreludeMiscIdUnique Int
    505
    mkTrAppKey :: Unique
    mkTrAppKey            = Int -> Unique
    mkPreludeMiscIdUnique Int
    506
    typeNatTypeRepKey :: Unique
    typeNatTypeRepKey     = Int -> Unique
    mkPreludeMiscIdUnique Int
    507
    typeSymbolTypeRepKey :: Unique
    typeSymbolTypeRepKey  = Int -> Unique
    mkPreludeMiscIdUnique Int
    508
    typeCharTypeRepKey :: Unique
    typeCharTypeRepKey    = Int -> Unique
    mkPreludeMiscIdUnique Int
    509
    typeRepIdKey :: Unique
    typeRepIdKey          = Int -> Unique
    mkPreludeMiscIdUnique Int
    510
    mkTrFunKey :: Unique
    mkTrFunKey            = Int -> Unique
    mkPreludeMiscIdUnique Int
    511

    -- KindReps for common cases
    starKindRepKey, starArrStarKindRepKey, starArrStarArrStarKindRepKey, constraintKindRepKey :: Unique
    starKindRepKey :: Unique
    starKindRepKey               = Int -> Unique
    mkPreludeMiscIdUnique Int
    520
    starArrStarKindRepKey :: Unique
    starArrStarKindRepKey        = Int -> Unique
    mkPreludeMiscIdUnique Int
    521
    starArrStarArrStarKindRepKey :: Unique
    starArrStarArrStarKindRepKey = Int -> Unique
    mkPreludeMiscIdUnique Int
    522
    constraintKindRepKey :: Unique
    constraintKindRepKey         = Int -> Unique
    mkPreludeMiscIdUnique Int
    523

    -- Dynamic
    toDynIdKey :: Unique
    toDynIdKey :: Unique
    toDynIdKey            = Int -> Unique
    mkPreludeMiscIdUnique Int
    530

    heqSCSelIdKey, eqSCSelIdKey, coercibleSCSelIdKey :: Unique
    eqSCSelIdKey :: Unique
    eqSCSelIdKey        = Int -> Unique
    mkPreludeMiscIdUnique Int
    551
    heqSCSelIdKey :: Unique
    heqSCSelIdKey       = Int -> Unique
    mkPreludeMiscIdUnique Int
    552
    coercibleSCSelIdKey :: Unique
    coercibleSCSelIdKey = Int -> Unique
    mkPreludeMiscIdUnique Int
    553

    sappendClassOpKey :: Unique
    sappendClassOpKey :: Unique
    sappendClassOpKey = Int -> Unique
    mkPreludeMiscIdUnique Int
    554

    memptyClassOpKey, mappendClassOpKey, mconcatClassOpKey :: Unique
    memptyClassOpKey :: Unique
    memptyClassOpKey  = Int -> Unique
    mkPreludeMiscIdUnique Int
    555
    mappendClassOpKey :: Unique
    mappendClassOpKey = Int -> Unique
    mkPreludeMiscIdUnique Int
    556
    mconcatClassOpKey :: Unique
    mconcatClassOpKey = Int -> Unique
    mkPreludeMiscIdUnique Int
    557

    emptyCallStackKey, pushCallStackKey :: Unique
    emptyCallStackKey :: Unique
    emptyCallStackKey = Int -> Unique
    mkPreludeMiscIdUnique Int
    558
    pushCallStackKey :: Unique
    pushCallStackKey  = Int -> Unique
    mkPreludeMiscIdUnique Int
    559

    fromStaticPtrClassOpKey :: Unique
    fromStaticPtrClassOpKey :: Unique
    fromStaticPtrClassOpKey = Int -> Unique
    mkPreludeMiscIdUnique Int
    560

    makeStaticKey :: Unique
    makeStaticKey :: Unique
    makeStaticKey = Int -> Unique
    mkPreludeMiscIdUnique Int
    561

    emptyExceptionContextKey :: Unique
    emptyExceptionContextKey :: Unique
    emptyExceptionContextKey = Int -> Unique
    mkPreludeMiscIdUnique Int
    562

    -- Unsafe coercion proofs
    unsafeEqualityProofIdKey, unsafeCoercePrimIdKey :: Unique
    unsafeEqualityProofIdKey :: Unique
    unsafeEqualityProofIdKey = Int -> Unique
    mkPreludeMiscIdUnique Int
    570
    unsafeCoercePrimIdKey :: Unique
    unsafeCoercePrimIdKey    = Int -> Unique
    mkPreludeMiscIdUnique Int
    571

    -- HasField class ops
    getFieldClassOpKey, setFieldClassOpKey :: Unique
    getFieldClassOpKey :: Unique
    getFieldClassOpKey = Int -> Unique
    mkPreludeMiscIdUnique Int
    572
    setFieldClassOpKey :: Unique
    setFieldClassOpKey = Int -> Unique
    mkPreludeMiscIdUnique Int
    573

    -- "Unsatisfiable" constraints
    unsatisfiableIdNameKey :: Unique
    unsatisfiableIdNameKey :: Unique
    unsatisfiableIdNameKey = Int -> Unique
    mkPreludeMiscIdUnique Int
    580

    ------------------------------------------------------
    -- ghc-bignum uses 600-699 uniques
    ------------------------------------------------------

    integerFromNaturalIdKey
       , integerToNaturalClampIdKey
       , integerToNaturalThrowIdKey
       , integerToNaturalIdKey
       , integerToWordIdKey
       , integerToIntIdKey
       , integerToWord64IdKey
       , integerToInt64IdKey
       , integerAddIdKey
       , integerMulIdKey
       , integerSubIdKey
       , integerNegateIdKey
       , integerAbsIdKey
       , integerPopCountIdKey
       , integerQuotIdKey
       , integerRemIdKey
       , integerDivIdKey
       , integerModIdKey
       , integerDivModIdKey
       , integerQuotRemIdKey
       , integerEncodeFloatIdKey
       , integerEncodeDoubleIdKey
       , integerGcdIdKey
       , integerLcmIdKey
       , integerAndIdKey
       , integerOrIdKey
       , integerXorIdKey
       , integerComplementIdKey
       , integerBitIdKey
       , integerTestBitIdKey
       , integerShiftLIdKey
       , integerShiftRIdKey
       , integerFromWordIdKey
       , integerFromWord64IdKey
       , integerFromInt64IdKey
       , naturalToWordIdKey
       , naturalPopCountIdKey
       , naturalShiftRIdKey
       , naturalShiftLIdKey
       , naturalAddIdKey
       , naturalSubIdKey
       , naturalSubThrowIdKey
       , naturalSubUnsafeIdKey
       , naturalMulIdKey
       , naturalQuotRemIdKey
       , naturalQuotIdKey
       , naturalRemIdKey
       , naturalAndIdKey
       , naturalAndNotIdKey
       , naturalOrIdKey
       , naturalXorIdKey
       , naturalTestBitIdKey
       , naturalBitIdKey
       , naturalGcdIdKey
       , naturalLcmIdKey
       , naturalLog2IdKey
       , naturalLogBaseWordIdKey
       , naturalLogBaseIdKey
       , naturalPowModIdKey
       , naturalSizeInBaseIdKey
       , bignatEqIdKey
       , bignatCompareIdKey
       , bignatCompareWordIdKey
       :: Unique

    integerFromNaturalIdKey :: Unique
    integerFromNaturalIdKey    = Int -> Unique
    mkPreludeMiscIdUnique Int
    600
    integerToNaturalClampIdKey :: Unique
    integerToNaturalClampIdKey = Int -> Unique
    mkPreludeMiscIdUnique Int
    601
    integerToNaturalThrowIdKey :: Unique
    integerToNaturalThrowIdKey = Int -> Unique
    mkPreludeMiscIdUnique Int
    602
    integerToNaturalIdKey :: Unique
    integerToNaturalIdKey      = Int -> Unique
    mkPreludeMiscIdUnique Int
    603
    integerToWordIdKey :: Unique
    integerToWordIdKey         = Int -> Unique
    mkPreludeMiscIdUnique Int
    604
    integerToIntIdKey :: Unique
    integerToIntIdKey          = Int -> Unique
    mkPreludeMiscIdUnique Int
    605
    integerToWord64IdKey :: Unique
    integerToWord64IdKey       = Int -> Unique
    mkPreludeMiscIdUnique Int
    606
    integerToInt64IdKey :: Unique
    integerToInt64IdKey        = Int -> Unique
    mkPreludeMiscIdUnique Int
    607
    integerAddIdKey :: Unique
    integerAddIdKey            = Int -> Unique
    mkPreludeMiscIdUnique Int
    608
    integerMulIdKey :: Unique
    integerMulIdKey            = Int -> Unique
    mkPreludeMiscIdUnique Int
    609
    integerSubIdKey :: Unique
    integerSubIdKey            = Int -> Unique
    mkPreludeMiscIdUnique Int
    610
    integerNegateIdKey :: Unique
    integerNegateIdKey         = Int -> Unique
    mkPreludeMiscIdUnique Int
    611
    integerAbsIdKey :: Unique
    integerAbsIdKey            = Int -> Unique
    mkPreludeMiscIdUnique Int
    618
    integerPopCountIdKey :: Unique
    integerPopCountIdKey       = Int -> Unique
    mkPreludeMiscIdUnique Int
    621
    integerQuotIdKey :: Unique
    integerQuotIdKey           = Int -> Unique
    mkPreludeMiscIdUnique Int
    622
    integerRemIdKey :: Unique
    integerRemIdKey            = Int -> Unique
    mkPreludeMiscIdUnique Int
    623
    integerDivIdKey :: Unique
    integerDivIdKey            = Int -> Unique
    mkPreludeMiscIdUnique Int
    624
    integerModIdKey :: Unique
    integerModIdKey            = Int -> Unique
    mkPreludeMiscIdUnique Int
    625
    integerDivModIdKey :: Unique
    integerDivModIdKey         = Int -> Unique
    mkPreludeMiscIdUnique Int
    626
    integerQuotRemIdKey :: Unique
    integerQuotRemIdKey        = Int -> Unique
    mkPreludeMiscIdUnique Int
    627
    integerEncodeFloatIdKey :: Unique
    integerEncodeFloatIdKey    = Int -> Unique
    mkPreludeMiscIdUnique Int
    630
    integerEncodeDoubleIdKey :: Unique
    integerEncodeDoubleIdKey   = Int -> Unique
    mkPreludeMiscIdUnique Int
    631
    integerGcdIdKey :: Unique
    integerGcdIdKey            = Int -> Unique
    mkPreludeMiscIdUnique Int
    632
    integerLcmIdKey :: Unique
    integerLcmIdKey            = Int -> Unique
    mkPreludeMiscIdUnique Int
    633
    integerAndIdKey :: Unique
    integerAndIdKey            = Int -> Unique
    mkPreludeMiscIdUnique Int
    634
    integerOrIdKey :: Unique
    integerOrIdKey             = Int -> Unique
    mkPreludeMiscIdUnique Int
    635
    integerXorIdKey :: Unique
    integerXorIdKey            = Int -> Unique
    mkPreludeMiscIdUnique Int
    636
    integerComplementIdKey :: Unique
    integerComplementIdKey     = Int -> Unique
    mkPreludeMiscIdUnique Int
    637
    integerBitIdKey :: Unique
    integerBitIdKey            = Int -> Unique
    mkPreludeMiscIdUnique Int
    638
    integerTestBitIdKey :: Unique
    integerTestBitIdKey        = Int -> Unique
    mkPreludeMiscIdUnique Int
    639
    integerShiftLIdKey :: Unique
    integerShiftLIdKey         = Int -> Unique
    mkPreludeMiscIdUnique Int
    640
    integerShiftRIdKey :: Unique
    integerShiftRIdKey         = Int -> Unique
    mkPreludeMiscIdUnique Int
    641
    integerFromWordIdKey :: Unique
    integerFromWordIdKey       = Int -> Unique
    mkPreludeMiscIdUnique Int
    642
    integerFromWord64IdKey :: Unique
    integerFromWord64IdKey     = Int -> Unique
    mkPreludeMiscIdUnique Int
    643
    integerFromInt64IdKey :: Unique
    integerFromInt64IdKey      = Int -> Unique
    mkPreludeMiscIdUnique Int
    644

    naturalToWordIdKey :: Unique
    naturalToWordIdKey         = Int -> Unique
    mkPreludeMiscIdUnique Int
    650
    naturalPopCountIdKey :: Unique
    naturalPopCountIdKey       = Int -> Unique
    mkPreludeMiscIdUnique Int
    659
    naturalShiftRIdKey :: Unique
    naturalShiftRIdKey         = Int -> Unique
    mkPreludeMiscIdUnique Int
    660
    naturalShiftLIdKey :: Unique
    naturalShiftLIdKey         = Int -> Unique
    mkPreludeMiscIdUnique Int
    661
    naturalAddIdKey :: Unique
    naturalAddIdKey            = Int -> Unique
    mkPreludeMiscIdUnique Int
    662
    naturalSubIdKey :: Unique
    naturalSubIdKey            = Int -> Unique
    mkPreludeMiscIdUnique Int
    663
    naturalSubThrowIdKey :: Unique
    naturalSubThrowIdKey       = Int -> Unique
    mkPreludeMiscIdUnique Int
    664
    naturalSubUnsafeIdKey :: Unique
    naturalSubUnsafeIdKey      = Int -> Unique
    mkPreludeMiscIdUnique Int
    665
    naturalMulIdKey :: Unique
    naturalMulIdKey            = Int -> Unique
    mkPreludeMiscIdUnique Int
    666
    naturalQuotRemIdKey :: Unique
    naturalQuotRemIdKey        = Int -> Unique
    mkPreludeMiscIdUnique Int
    669
    naturalQuotIdKey :: Unique
    naturalQuotIdKey           = Int -> Unique
    mkPreludeMiscIdUnique Int
    670
    naturalRemIdKey :: Unique
    naturalRemIdKey            = Int -> Unique
    mkPreludeMiscIdUnique Int
    671
    naturalAndIdKey :: Unique
    naturalAndIdKey            = Int -> Unique
    mkPreludeMiscIdUnique Int
    672
    naturalAndNotIdKey :: Unique
    naturalAndNotIdKey         = Int -> Unique
    mkPreludeMiscIdUnique Int
    673
    naturalOrIdKey :: Unique
    naturalOrIdKey             = Int -> Unique
    mkPreludeMiscIdUnique Int
    674
    naturalXorIdKey :: Unique
    naturalXorIdKey            = Int -> Unique
    mkPreludeMiscIdUnique Int
    675
    naturalTestBitIdKey :: Unique
    naturalTestBitIdKey        = Int -> Unique
    mkPreludeMiscIdUnique Int
    676
    naturalBitIdKey :: Unique
    naturalBitIdKey            = Int -> Unique
    mkPreludeMiscIdUnique Int
    677
    naturalGcdIdKey :: Unique
    naturalGcdIdKey            = Int -> Unique
    mkPreludeMiscIdUnique Int
    678
    naturalLcmIdKey :: Unique
    naturalLcmIdKey            = Int -> Unique
    mkPreludeMiscIdUnique Int
    679
    naturalLog2IdKey :: Unique
    naturalLog2IdKey           = Int -> Unique
    mkPreludeMiscIdUnique Int
    680
    naturalLogBaseWordIdKey :: Unique
    naturalLogBaseWordIdKey    = Int -> Unique
    mkPreludeMiscIdUnique Int
    681
    naturalLogBaseIdKey :: Unique
    naturalLogBaseIdKey        = Int -> Unique
    mkPreludeMiscIdUnique Int
    682
    naturalPowModIdKey :: Unique
    naturalPowModIdKey         = Int -> Unique
    mkPreludeMiscIdUnique Int
    683
    naturalSizeInBaseIdKey :: Unique
    naturalSizeInBaseIdKey     = Int -> Unique
    mkPreludeMiscIdUnique Int
    684

    bignatEqIdKey :: Unique
    bignatEqIdKey              = Int -> Unique
    mkPreludeMiscIdUnique Int
    691
    bignatCompareIdKey :: Unique
    bignatCompareIdKey         = Int -> Unique
    mkPreludeMiscIdUnique Int
    692
    bignatCompareWordIdKey :: Unique
    bignatCompareWordIdKey     = Int -> Unique
    mkPreludeMiscIdUnique Int
    693

    ------------------------------------------------------
    -- ghci optimization for big rationals 700-749 uniques
    ------------------------------------------------------

    -- Creating rationals at runtime.
    mkRationalBase2IdKey, mkRationalBase10IdKey :: Unique
    mkRationalBase2IdKey :: Unique
    mkRationalBase2IdKey  = Int -> Unique
    mkPreludeMiscIdUnique Int
    700
    mkRationalBase10IdKey :: Unique
    mkRationalBase10IdKey = Int -> Unique
    mkPreludeMiscIdUnique Int
    701 :: Unique

    {-
    ************************************************************************
    *                                                                      *
    \subsection[Class-std-groups]{Standard groups of Prelude classes}
    *                                                                      *
    ************************************************************************

    NOTE: @Eq@ and @Text@ do need to appear in @standardClasses@
    even though every numeric class has these two as a superclass,
    because the list of ambiguous dictionaries hasn't been simplified.
    -}

    numericClassKeys :: [Unique]
    numericClassKeys :: [Unique]
    numericClassKeys =
            [ Unique
    numClassKey
            , Unique
    realClassKey
            , Unique
    integralClassKey
            ]
            [Unique] -> [Unique] -> [Unique]
    forall a. [a] -> [a] -> [a]
    ++ [Unique]
    fractionalClassKeys

    fractionalClassKeys :: [Unique]
    fractionalClassKeys :: [Unique]
    fractionalClassKeys =
            [ Unique
    fractionalClassKey
            , Unique
    floatingClassKey
            , Unique
    realFracClassKey
            , Unique
    realFloatClassKey
            ]

    -- The "standard classes" are used in defaulting (Haskell 98 report 4.3.4),
    -- and are: "classes defined in the Prelude or a standard library"
    standardClassKeys :: [Unique]
    standardClassKeys :: [Unique]
    standardClassKeys = [Unique]
    derivableClassKeys [Unique] -> [Unique] -> [Unique]
    forall a. [a] -> [a] -> [a]
    ++ [Unique]
    numericClassKeys
                      [Unique] -> [Unique] -> [Unique]
    forall a. [a] -> [a] -> [a]
    ++ [Unique
    randomClassKey, Unique
    randomGenClassKey,
                          Unique
    functorClassKey,
                          Unique
    monadClassKey, Unique
    monadPlusClassKey, Unique
    monadFailClassKey,
                          Unique
    semigroupClassKey, Unique
    monoidClassKey,
                          Unique
    isStringClassKey,
                          Unique
    applicativeClassKey, Unique
    foldableClassKey,
                          Unique
    traversableClassKey, Unique
    alternativeClassKey
                         ]

    {-
    @derivableClassKeys@ is also used in checking \tr{deriving} constructs
    (@GHC.Tc.Deriv@).
    -}

    derivableClassKeys :: [Unique]
    derivableClassKeys :: [Unique]
    derivableClassKeys
      = [ Unique
    eqClassKey, Unique
    ordClassKey, Unique
    enumClassKey, Unique
    ixClassKey,
          Unique
    boundedClassKey, Unique
    showClassKey, Unique
    readClassKey ]

    -- These are the "interactive classes" that are consulted when doing
    -- defaulting. Does not include Num or IsString, which have special
    -- handling.
    interactiveClassNames :: [Name]
    interactiveClassNames :: [Name]
    interactiveClassNames
      = [ Name
    showClassName, Name
    eqClassName, Name
    ordClassName, Name
    foldableClassName
        , Name
    traversableClassName ]

    interactiveClassKeys :: [Unique]
    interactiveClassKeys :: [Unique]
    interactiveClassKeys = (Name -> Unique) -> [Name] -> [Unique]
    forall a b. (a -> b) -> [a] -> [b]
    map Name -> Unique
    forall a. Uniquable a => a -> Unique
    getUnique [Name]
    interactiveClassNames