    {-
    (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

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

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

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

     - Names for Ids, DataCons, TyCons and Classes that the compiler
       "knows about" in some way
            e.g.    intTyConName :: 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).  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 the
         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 #-}
    {-# OPTIONS_GHC -Wno-incomplete-uni-patterns   #-}

    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

    #include "HsVersions.h"

    import GHC.Prelude

    import GHC.Unit.Types
    import GHC.Unit.Module.Name
    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

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

    allNameStrings :: [String]
    -- Infinite list of a,b,c...z, aa, ab, ac, ... etc
    allNameStrings :: [String]
    allNameStrings = [ Char
    cforall a. a -> [a] -> [a]
    :String
    cs | String
    cs <- String
    "" forall a. a -> [a] -> [a]
    : [String]
    allNameStrings, Char
    c <- [Char
    'a'..Char
    'z'] ]

    {-
    ************************************************************************
    *                                                                      *
    \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 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
     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
            -- See Note [TyConRepNames for non-wired-in TyCons]
            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,

            -- 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
    groupWithName,
            Name
    considerAccessibleName,

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

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

            -- 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
    int8TyConName, Name
    int16TyConName, Name
    int32TyConName, Name
    int64TyConName,
            Name
    word8TyConName, Name
    word16TyConName, Name
    word32TyConName, Name
    word64TyConName,

            -- Others
            Name
    otherwiseIdName, Name
    inlineIdName,
            Name
    eqStringName, Name
    assertName, Name
    breakpointName, Name
    breakpointCondName,
            Name
    opaqueTyConName,
            Name
    assertErrorName, Name
    traceName,
            Name
    printName, Name
    fstName, Name
    sndName,
            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
    integerEqName,
            Name
    integerNeName,
            Name
    integerLeName,
            Name
    integerGtName,
            Name
    integerLtName,
            Name
    integerGeName,
            Name
    integerAbsName,
            Name
    integerSignumName,
            Name
    integerCompareName,
            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
    naturalToWordClampName,
            Name
    naturalEqName,
            Name
    naturalNeName,
            Name
    naturalGeName,
            Name
    naturalLeName,
            Name
    naturalGtName,
            Name
    naturalLtName,
            Name
    naturalCompareName,
            Name
    naturalPopCountName,
            Name
    naturalShiftRName,
            Name
    naturalShiftLName,
            Name
    naturalAddName,
            Name
    naturalSubName,
            Name
    naturalSubThrowName,
            Name
    naturalSubUnsafeName,
            Name
    naturalMulName,
            Name
    naturalSignumName,
            Name
    naturalNegateName,
            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
    bignatFromWordListName,

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

            -- Other classes
            Name
    randomClassName, Name
    randomGenClassName, Name
    monadPlusClassName,

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

            -- Overloaded labels
            Name
    fromLabelClassOpName,

            -- Implicit Parameters
            Name
    ipClassName,

            -- Overloaded record fields
            Name
    hasFieldClassName,

            -- 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

            -- 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

            -- 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
    noSelTyConName,
        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
    -}

    pRELUDE :: Module
    pRELUDE :: Module
    pRELUDE         = ModuleName -> Module
    mkBaseModule_ ModuleName
    pRELUDE_NAME

    gHC_PRIM, gHC_PRIM_PANIC, gHC_PRIM_EXCEPTION,
        gHC_TYPES, gHC_GENERICS, gHC_MAGIC,
        gHC_CLASSES, gHC_PRIMOPWRAPPERS, gHC_BASE, gHC_ENUM,
        gHC_GHCI, gHC_GHCI_HELPERS, gHC_CSTRING,
        gHC_SHOW, gHC_READ, gHC_NUM, gHC_MAYBE,
        gHC_NUM_INTEGER, gHC_NUM_NATURAL, gHC_NUM_BIGNAT,
        gHC_LIST, gHC_TUPLE, dATA_TUPLE, dATA_EITHER, dATA_LIST, dATA_STRING,
        dATA_FOLDABLE, dATA_TRAVERSABLE,
        gHC_CONC, gHC_IO, gHC_IO_Exception,
        gHC_ST, gHC_IX, gHC_STABLE, gHC_PTR, gHC_ERR, gHC_REAL,
        gHC_FLOAT, gHC_TOP_HANDLER, sYSTEM_IO, dYNAMIC,
        tYPEABLE, tYPEABLE_INTERNAL, gENERICS,
        rEAD_PREC, lEX, gHC_INT, gHC_WORD, mONAD, mONAD_FIX, mONAD_ZIP, mONAD_FAIL,
        aRROW, cONTROL_APPLICATIVE, gHC_DESUGAR, rANDOM, gHC_EXTS,
        cONTROL_EXCEPTION_BASE, gHC_TYPELITS, gHC_TYPELITS_INTERNAL,
        gHC_TYPENATS, gHC_TYPENATS_INTERNAL, dATA_TYPE_EQUALITY,
        dATA_COERCE, dEBUG_TRACE, uNSAFE_COERCE :: 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_PRIM_EXCEPTION :: Module
    gHC_PRIM_EXCEPTION = FastString -> Module
    mkPrimModule (String -> FastString
    fsLit String
    "GHC.Prim.Exception")
    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_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_BASE :: Module
    gHC_BASE        = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "GHC.Base")
    gHC_ENUM :: Module
    gHC_ENUM        = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "GHC.Enum")
    gHC_GHCI :: Module
    gHC_GHCI        = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "GHC.GHCi")
    gHC_GHCI_HELPERS :: Module
    gHC_GHCI_HELPERS= FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "GHC.GHCi.Helpers")
    gHC_SHOW :: Module
    gHC_SHOW        = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "GHC.Show")
    gHC_READ :: Module
    gHC_READ        = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "GHC.Read")
    gHC_NUM :: Module
    gHC_NUM         = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "GHC.Num")
    gHC_MAYBE :: Module
    gHC_MAYBE       = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "GHC.Maybe")
    gHC_NUM_INTEGER :: Module
    gHC_NUM_INTEGER = FastString -> Module
    mkBignumModule (String -> FastString
    fsLit String
    "GHC.Num.Integer")
    gHC_NUM_NATURAL :: Module
    gHC_NUM_NATURAL = FastString -> Module
    mkBignumModule (String -> FastString
    fsLit String
    "GHC.Num.Natural")
    gHC_NUM_BIGNAT :: Module
    gHC_NUM_BIGNAT  = FastString -> Module
    mkBignumModule (String -> FastString
    fsLit String
    "GHC.Num.BigNat")
    gHC_LIST :: Module
    gHC_LIST        = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "GHC.List")
    gHC_TUPLE :: Module
    gHC_TUPLE       = FastString -> Module
    mkPrimModule (String -> FastString
    fsLit String
    "GHC.Tuple")
    dATA_TUPLE :: Module
    dATA_TUPLE      = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "Data.Tuple")
    dATA_EITHER :: Module
    dATA_EITHER     = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "Data.Either")
    dATA_LIST :: Module
    dATA_LIST       = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "Data.List")
    dATA_STRING :: Module
    dATA_STRING     = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "Data.String")
    dATA_FOLDABLE :: Module
    dATA_FOLDABLE   = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "Data.Foldable")
    dATA_TRAVERSABLE :: Module
    dATA_TRAVERSABLE= FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "Data.Traversable")
    gHC_CONC :: Module
    gHC_CONC        = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "GHC.Conc")
    gHC_IO :: Module
    gHC_IO          = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "GHC.IO")
    gHC_IO_Exception :: Module
    gHC_IO_Exception = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "GHC.IO.Exception")
    gHC_ST :: Module
    gHC_ST          = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "GHC.ST")
    gHC_IX :: Module
    gHC_IX          = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "GHC.Ix")
    gHC_STABLE :: Module
    gHC_STABLE      = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "GHC.Stable")
    gHC_PTR :: Module
    gHC_PTR         = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "GHC.Ptr")
    gHC_ERR :: Module
    gHC_ERR         = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "GHC.Err")
    gHC_REAL :: Module
    gHC_REAL        = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "GHC.Real")
    gHC_FLOAT :: Module
    gHC_FLOAT       = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "GHC.Float")
    gHC_TOP_HANDLER :: Module
    gHC_TOP_HANDLER = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "GHC.TopHandler")
    sYSTEM_IO :: Module
    sYSTEM_IO       = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "System.IO")
    dYNAMIC :: Module
    dYNAMIC         = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "Data.Dynamic")
    tYPEABLE :: Module
    tYPEABLE        = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "Data.Typeable")
    tYPEABLE_INTERNAL :: Module
    tYPEABLE_INTERNAL = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "Data.Typeable.Internal")
    gENERICS :: Module
    gENERICS        = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "Data.Data")
    rEAD_PREC :: Module
    rEAD_PREC       = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "Text.ParserCombinators.ReadPrec")
    lEX :: Module
    lEX             = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "Text.Read.Lex")
    gHC_INT :: Module
    gHC_INT         = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "GHC.Int")
    gHC_WORD :: Module
    gHC_WORD        = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "GHC.Word")
    mONAD :: Module
    mONAD           = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "Control.Monad")
    mONAD_FIX :: Module
    mONAD_FIX       = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "Control.Monad.Fix")
    mONAD_ZIP :: Module
    mONAD_ZIP       = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "Control.Monad.Zip")
    mONAD_FAIL :: Module
    mONAD_FAIL      = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "Control.Monad.Fail")
    aRROW :: Module
    aRROW           = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "Control.Arrow")
    cONTROL_APPLICATIVE :: Module
    cONTROL_APPLICATIVE = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "Control.Applicative")
    gHC_DESUGAR :: Module
    gHC_DESUGAR = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "GHC.Desugar")
    rANDOM :: Module
    rANDOM          = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "System.Random")
    gHC_EXTS :: Module
    gHC_EXTS        = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "GHC.Exts")
    cONTROL_EXCEPTION_BASE :: Module
    cONTROL_EXCEPTION_BASE = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "Control.Exception.Base")
    gHC_GENERICS :: Module
    gHC_GENERICS    = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "GHC.Generics")
    gHC_TYPELITS :: Module
    gHC_TYPELITS    = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "GHC.TypeLits")
    gHC_TYPELITS_INTERNAL :: Module
    gHC_TYPELITS_INTERNAL = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "GHC.TypeLits.Internal")
    gHC_TYPENATS :: Module
    gHC_TYPENATS    = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "GHC.TypeNats")
    gHC_TYPENATS_INTERNAL :: Module
    gHC_TYPENATS_INTERNAL = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "GHC.TypeNats.Internal")
    dATA_TYPE_EQUALITY :: Module
    dATA_TYPE_EQUALITY = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "Data.Type.Equality")
    dATA_COERCE :: Module
    dATA_COERCE     = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "Data.Coerce")
    dEBUG_TRACE :: Module
    dEBUG_TRACE     = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "Debug.Trace")
    uNSAFE_COERCE :: Module
    uNSAFE_COERCE   = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "Unsafe.Coerce")

    gHC_SRCLOC :: Module
    gHC_SRCLOC :: Module
    gHC_SRCLOC = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "GHC.SrcLoc")

    gHC_STACK, gHC_STACK_TYPES :: Module
    gHC_STACK :: Module
    gHC_STACK = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "GHC.Stack")
    gHC_STACK_TYPES :: Module
    gHC_STACK_TYPES = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "GHC.Stack.Types")

    gHC_STATICPTR :: Module
    gHC_STATICPTR :: Module
    gHC_STATICPTR = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "GHC.StaticPtr")

    gHC_STATICPTR_INTERNAL :: Module
    gHC_STATICPTR_INTERNAL :: Module
    gHC_STATICPTR_INTERNAL = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "GHC.StaticPtr.Internal")

    gHC_FINGERPRINT_TYPE :: Module
    gHC_FINGERPRINT_TYPE :: Module
    gHC_FINGERPRINT_TYPE = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "GHC.Fingerprint.Type")

    gHC_OVER_LABELS :: Module
    gHC_OVER_LABELS :: Module
    gHC_OVER_LABELS = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "GHC.OverloadedLabels")

    gHC_RECORDS :: Module
    gHC_RECORDS :: Module
    gHC_RECORDS = FastString -> Module
    mkBaseModule (String -> FastString
    fsLit String
    "GHC.Records")

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

    mkInteractiveModule :: Int -> Module
    -- (mkInteractiveMoudule 9) makes module 'interactive:Ghci9'
    mkInteractiveModule :: Arity -> Module
    mkInteractiveModule Arity
    n = forall u. u -> ModuleName -> GenModule u
    mkModule Unit
    interactiveUnit (String -> ModuleName
    mkModuleName (String
    "Ghci" forall a. [a] -> [a] -> [a]
    ++ forall a. Show a => a -> String
    show Arity
    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")

    dATA_ARRAY_PARALLEL_NAME, dATA_ARRAY_PARALLEL_PRIM_NAME :: ModuleName
    dATA_ARRAY_PARALLEL_NAME :: ModuleName
    dATA_ARRAY_PARALLEL_NAME      = FastString -> ModuleName
    mkModuleNameFS (String -> FastString
    fsLit String
    "Data.Array.Parallel")
    dATA_ARRAY_PARALLEL_PRIM_NAME :: ModuleName
    dATA_ARRAY_PARALLEL_PRIM_NAME = FastString -> ModuleName
    mkModuleNameFS (String -> FastString
    fsLit String
    "Data.Array.Parallel.Prim")

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

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

    mkBaseModule :: FastString -> Module
    mkBaseModule :: FastString -> Module
    mkBaseModule FastString
    m = ModuleName -> Module
    mkBaseModule_ (FastString -> ModuleName
    mkModuleNameFS FastString
    m)

    mkBaseModule_ :: ModuleName -> Module
    mkBaseModule_ :: ModuleName -> Module
    mkBaseModule_ ModuleName
    m = forall u. u -> ModuleName -> GenModule u
    mkModule Unit
    baseUnit 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 = forall u. u -> ModuleName -> GenModule u
    mkModule Unit
    thisGhcUnit ModuleName
    m

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

    mkMainModule_ :: ModuleName -> Module
    mkMainModule_ :: ModuleName -> Module
    mkMainModule_ ModuleName
    m = 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

    eqClass_RDR, numClass_RDR, ordClass_RDR, enumClass_RDR, monadClass_RDR
        :: RdrName
    eqClass_RDR :: RdrName
    eqClass_RDR             = Name -> RdrName
    nameRdrName Name
    eqClassName
    numClass_RDR :: RdrName
    numClass_RDR            = Name -> RdrName
    nameRdrName Name
    numClassName
    ordClass_RDR :: RdrName
    ordClass_RDR            = Name -> RdrName
    nameRdrName Name
    ordClassName
    enumClass_RDR :: RdrName
    enumClass_RDR           = Name -> RdrName
    nameRdrName Name
    enumClassName
    monadClass_RDR :: RdrName
    monadClass_RDR          = Name -> RdrName
    nameRdrName Name
    monadClassName

    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 :: RdrName
    fromEnum_RDR :: RdrName
    fromEnum_RDR            = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_ENUM (String -> FastString
    fsLit String
    "fromEnum")
    toEnum_RDR :: RdrName
    toEnum_RDR              = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_ENUM (String -> FastString
    fsLit String
    "toEnum")

    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

    ratioDataCon_RDR, integerAdd_RDR, integerMul_RDR :: RdrName
    ratioDataCon_RDR :: RdrName
    ratioDataCon_RDR        = Name -> RdrName
    nameRdrName Name
    ratioDataConName
    integerAdd_RDR :: RdrName
    integerAdd_RDR          = Name -> RdrName
    nameRdrName Name
    integerAddName
    integerMul_RDR :: RdrName
    integerMul_RDR          = Name -> RdrName
    nameRdrName Name
    integerMulName

    ioDataCon_RDR :: RdrName
    ioDataCon_RDR :: RdrName
    ioDataCon_RDR           = Name -> RdrName
    nameRdrName Name
    ioDataConName

    eqString_RDR, unpackCString_RDR, unpackCStringFoldr_RDR,
        unpackCStringFoldrUtf8_RDR, unpackCStringUtf8_RDR :: RdrName
    eqString_RDR :: RdrName
    eqString_RDR            = Name -> RdrName
    nameRdrName Name
    eqStringName
    unpackCString_RDR :: RdrName
    unpackCString_RDR       = Name -> RdrName
    nameRdrName Name
    unpackCStringName
    unpackCStringFoldr_RDR :: RdrName
    unpackCStringFoldr_RDR  = Name -> RdrName
    nameRdrName Name
    unpackCStringFoldrName
    unpackCStringUtf8_RDR :: RdrName
    unpackCStringUtf8_RDR   = Name -> RdrName
    nameRdrName Name
    unpackCStringUtf8Name
    unpackCStringFoldrUtf8_RDR :: RdrName
    unpackCStringFoldrUtf8_RDR  = Name -> RdrName
    nameRdrName Name
    unpackCStringFoldrUtf8Name

    newStablePtr_RDR :: RdrName
    newStablePtr_RDR :: RdrName
    newStablePtr_RDR        = Name -> RdrName
    nameRdrName Name
    newStablePtrName

    bindIO_RDR, returnIO_RDR :: RdrName
    bindIO_RDR :: RdrName
    bindIO_RDR              = Name -> RdrName
    nameRdrName Name
    bindIOName
    returnIO_RDR :: RdrName
    returnIO_RDR            = Name -> RdrName
    nameRdrName Name
    returnIOName

    fromInteger_RDR, fromRational_RDR, minus_RDR, times_RDR, plus_RDR :: RdrName
    fromInteger_RDR :: RdrName
    fromInteger_RDR         = Name -> RdrName
    nameRdrName Name
    fromIntegerName
    fromRational_RDR :: RdrName
    fromRational_RDR        = Name -> RdrName
    nameRdrName Name
    fromRationalName
    minus_RDR :: RdrName
    minus_RDR               = Name -> RdrName
    nameRdrName Name
    minusName
    times_RDR :: RdrName
    times_RDR               = Module -> FastString -> RdrName
    varQual_RDR  Module
    gHC_NUM (String -> FastString
    fsLit String
    "*")
    plus_RDR :: RdrName
    plus_RDR                = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_NUM (String -> FastString
    fsLit String
    "+")

    toInteger_RDR, toRational_RDR, fromIntegral_RDR :: RdrName
    toInteger_RDR :: RdrName
    toInteger_RDR           = Name -> RdrName
    nameRdrName Name
    toIntegerName
    toRational_RDR :: RdrName
    toRational_RDR          = Name -> RdrName
    nameRdrName Name
    toRationalName
    fromIntegral_RDR :: RdrName
    fromIntegral_RDR        = Name -> RdrName
    nameRdrName Name
    fromIntegralName

    fromString_RDR :: RdrName
    fromString_RDR :: RdrName
    fromString_RDR          = Name -> RdrName
    nameRdrName Name
    fromStringName

    fromList_RDR, fromListN_RDR, toList_RDR :: RdrName
    fromList_RDR :: RdrName
    fromList_RDR = Name -> RdrName
    nameRdrName Name
    fromListName
    fromListN_RDR :: RdrName
    fromListN_RDR = Name -> RdrName
    nameRdrName Name
    fromListNName
    toList_RDR :: RdrName
    toList_RDR = Name -> RdrName
    nameRdrName Name
    toListName

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

    not_RDR, getTag_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")
    getTag_RDR :: RdrName
    getTag_RDR              = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_BASE (String -> FastString
    fsLit String
    "getTag")
    dataToTag_RDR :: RdrName
    dataToTag_RDR           = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_PRIM (String -> FastString
    fsLit String
    "dataToTag#")
    succ_RDR :: RdrName
    succ_RDR                = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_ENUM (String -> FastString
    fsLit String
    "succ")
    pred_RDR :: RdrName
    pred_RDR                = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_ENUM (String -> FastString
    fsLit String
    "pred")
    minBound_RDR :: RdrName
    minBound_RDR            = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_ENUM (String -> FastString
    fsLit String
    "minBound")
    maxBound_RDR :: RdrName
    maxBound_RDR            = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_ENUM (String -> FastString
    fsLit String
    "maxBound")
    range_RDR :: RdrName
    range_RDR               = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_IX (String -> FastString
    fsLit String
    "range")
    inRange_RDR :: RdrName
    inRange_RDR             = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_IX (String -> FastString
    fsLit String
    "inRange")
    index_RDR :: RdrName
    index_RDR               = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_IX (String -> FastString
    fsLit String
    "index")
    unsafeIndex_RDR :: RdrName
    unsafeIndex_RDR         = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_IX (String -> FastString
    fsLit String
    "unsafeIndex")
    unsafeRangeSize_RDR :: RdrName
    unsafeRangeSize_RDR     = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_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_READ (String -> FastString
    fsLit String
    "readList")
    readListDefault_RDR :: RdrName
    readListDefault_RDR     = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_READ (String -> FastString
    fsLit String
    "readListDefault")
    readListPrec_RDR :: RdrName
    readListPrec_RDR        = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_READ (String -> FastString
    fsLit String
    "readListPrec")
    readListPrecDefault_RDR :: RdrName
    readListPrecDefault_RDR = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_READ (String -> FastString
    fsLit String
    "readListPrecDefault")
    readPrec_RDR :: RdrName
    readPrec_RDR            = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_READ (String -> FastString
    fsLit String
    "readPrec")
    parens_RDR :: RdrName
    parens_RDR              = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_READ (String -> FastString
    fsLit String
    "parens")
    choose_RDR :: RdrName
    choose_RDR              = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_READ (String -> FastString
    fsLit String
    "choose")
    lexP_RDR :: RdrName
    lexP_RDR                = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_READ (String -> FastString
    fsLit String
    "lexP")
    expectP_RDR :: RdrName
    expectP_RDR             = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_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_READ (String -> FastString
    fsLit String
    "readField")
    readFieldHash_RDR :: RdrName
    readFieldHash_RDR       = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_READ (String -> FastString
    fsLit String
    "readFieldHash")
    readSymField_RDR :: RdrName
    readSymField_RDR        = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_READ (String -> FastString
    fsLit String
    "readSymField")

    punc_RDR, ident_RDR, symbol_RDR :: RdrName
    punc_RDR :: RdrName
    punc_RDR                = Module -> FastString -> RdrName
    dataQual_RDR Module
    lEX (String -> FastString
    fsLit String
    "Punc")
    ident_RDR :: RdrName
    ident_RDR               = Module -> FastString -> RdrName
    dataQual_RDR Module
    lEX (String -> FastString
    fsLit String
    "Ident")
    symbol_RDR :: RdrName
    symbol_RDR              = Module -> FastString -> RdrName
    dataQual_RDR Module
    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
    rEAD_PREC (String -> FastString
    fsLit String
    "step")
    alt_RDR :: RdrName
    alt_RDR                 = Module -> FastString -> RdrName
    varQual_RDR  Module
    rEAD_PREC (String -> FastString
    fsLit String
    "+++")
    reset_RDR :: RdrName
    reset_RDR               = Module -> FastString -> RdrName
    varQual_RDR  Module
    rEAD_PREC (String -> FastString
    fsLit String
    "reset")
    prec_RDR :: RdrName
    prec_RDR                = Module -> FastString -> RdrName
    varQual_RDR  Module
    rEAD_PREC (String -> FastString
    fsLit String
    "prec")
    pfail_RDR :: RdrName
    pfail_RDR               = Module -> FastString -> RdrName
    varQual_RDR  Module
    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_SHOW (String -> FastString
    fsLit String
    "showsPrec")
    shows_RDR :: RdrName
    shows_RDR               = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_SHOW (String -> FastString
    fsLit String
    "shows")
    showString_RDR :: RdrName
    showString_RDR          = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_SHOW (String -> FastString
    fsLit String
    "showString")
    showSpace_RDR :: RdrName
    showSpace_RDR           = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_SHOW (String -> FastString
    fsLit String
    "showSpace")
    showCommaSpace_RDR :: RdrName
    showCommaSpace_RDR      = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_SHOW (String -> FastString
    fsLit String
    "showCommaSpace")
    showParen_RDR :: RdrName
    showParen_RDR           = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_SHOW (String -> FastString
    fsLit String
    "showParen")

    error_RDR :: RdrName
    error_RDR :: RdrName
    error_RDR = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_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_GENERICS (String -> FastString
    fsLit String
    "U1")
    par1DataCon_RDR :: RdrName
    par1DataCon_RDR  = Module -> FastString -> RdrName
    dataQual_RDR Module
    gHC_GENERICS (String -> FastString
    fsLit String
    "Par1")
    rec1DataCon_RDR :: RdrName
    rec1DataCon_RDR  = Module -> FastString -> RdrName
    dataQual_RDR Module
    gHC_GENERICS (String -> FastString
    fsLit String
    "Rec1")
    k1DataCon_RDR :: RdrName
    k1DataCon_RDR    = Module -> FastString -> RdrName
    dataQual_RDR Module
    gHC_GENERICS (String -> FastString
    fsLit String
    "K1")
    m1DataCon_RDR :: RdrName
    m1DataCon_RDR    = Module -> FastString -> RdrName
    dataQual_RDR Module
    gHC_GENERICS (String -> FastString
    fsLit String
    "M1")

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

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

    unPar1_RDR :: RdrName
    unPar1_RDR  = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_GENERICS (String -> FastString
    fsLit String
    "unPar1")
    unRec1_RDR :: RdrName
    unRec1_RDR  = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_GENERICS (String -> FastString
    fsLit String
    "unRec1")
    unK1_RDR :: RdrName
    unK1_RDR    = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_GENERICS (String -> FastString
    fsLit String
    "unK1")
    unComp1_RDR :: RdrName
    unComp1_RDR = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_GENERICS (String -> FastString
    fsLit String
    "unComp1")

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

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

    prefixDataCon_RDR :: RdrName
    prefixDataCon_RDR     = Module -> FastString -> RdrName
    dataQual_RDR Module
    gHC_GENERICS (String -> FastString
    fsLit String
    "Prefix")
    infixDataCon_RDR :: RdrName
    infixDataCon_RDR      = Module -> FastString -> RdrName
    dataQual_RDR Module
    gHC_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_GENERICS (String -> FastString
    fsLit String
    "UAddr")
    uCharDataCon_RDR :: RdrName
    uCharDataCon_RDR   = Module -> FastString -> RdrName
    dataQual_RDR Module
    gHC_GENERICS (String -> FastString
    fsLit String
    "UChar")
    uDoubleDataCon_RDR :: RdrName
    uDoubleDataCon_RDR = Module -> FastString -> RdrName
    dataQual_RDR Module
    gHC_GENERICS (String -> FastString
    fsLit String
    "UDouble")
    uFloatDataCon_RDR :: RdrName
    uFloatDataCon_RDR  = Module -> FastString -> RdrName
    dataQual_RDR Module
    gHC_GENERICS (String -> FastString
    fsLit String
    "UFloat")
    uIntDataCon_RDR :: RdrName
    uIntDataCon_RDR    = Module -> FastString -> RdrName
    dataQual_RDR Module
    gHC_GENERICS (String -> FastString
    fsLit String
    "UInt")
    uWordDataCon_RDR :: RdrName
    uWordDataCon_RDR   = Module -> FastString -> RdrName
    dataQual_RDR Module
    gHC_GENERICS (String -> FastString
    fsLit String
    "UWord")

    uAddrHash_RDR :: RdrName
    uAddrHash_RDR   = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_GENERICS (String -> FastString
    fsLit String
    "uAddr#")
    uCharHash_RDR :: RdrName
    uCharHash_RDR   = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_GENERICS (String -> FastString
    fsLit String
    "uChar#")
    uDoubleHash_RDR :: RdrName
    uDoubleHash_RDR = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_GENERICS (String -> FastString
    fsLit String
    "uDouble#")
    uFloatHash_RDR :: RdrName
    uFloatHash_RDR  = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_GENERICS (String -> FastString
    fsLit String
    "uFloat#")
    uIntHash_RDR :: RdrName
    uIntHash_RDR    = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_GENERICS (String -> FastString
    fsLit String
    "uInt#")
    uWordHash_RDR :: RdrName
    uWordHash_RDR   = Module -> FastString -> RdrName
    varQual_RDR Module
    gHC_GENERICS (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_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_BASE (String -> FastString
    fsLit String
    "liftA2")
    foldable_foldr_RDR :: RdrName
    foldable_foldr_RDR      = Module -> FastString -> RdrName
    varQual_RDR Module
    dATA_FOLDABLE       (String -> FastString
    fsLit String
    "foldr")
    foldMap_RDR :: RdrName
    foldMap_RDR             = Module -> FastString -> RdrName
    varQual_RDR Module
    dATA_FOLDABLE       (String -> FastString
    fsLit String
    "foldMap")
    null_RDR :: RdrName
    null_RDR                = Module -> FastString -> RdrName
    varQual_RDR Module
    dATA_FOLDABLE       (String -> FastString
    fsLit String
    "null")
    all_RDR :: RdrName
    all_RDR                 = Module -> FastString -> RdrName
    varQual_RDR Module
    dATA_FOLDABLE       (String -> FastString
    fsLit String
    "all")
    traverse_RDR :: RdrName
    traverse_RDR            = Module -> FastString -> RdrName
    varQual_RDR Module
    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)

    {-
    ************************************************************************
    *                                                                      *
    \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_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
    dATA_EITHER (String -> FastString
    fsLit String
    "Either") Unique
    eitherTyConKey
    leftDataConName :: Name
    leftDataConName   = Module -> FastString -> Unique -> Name
    dcQual Module
    dATA_EITHER (String -> FastString
    fsLit String
    "Left")   Unique
    leftDataConKey
    rightDataConName :: Name
    rightDataConName  = Module -> FastString -> Unique -> Name
    dcQual Module
    dATA_EITHER (String -> FastString
    fsLit String
    "Right")  Unique
    rightDataConKey

    -- Generics (types)
    v1TyConName, u1TyConName, par1TyConName, rec1TyConName,
      k1TyConName, m1TyConName, sumTyConName, prodTyConName,
      compTyConName, rTyConName, dTyConName,
      cTyConName, sTyConName, rec0TyConName,
      d1TyConName, c1TyConName, s1TyConName, noSelTyConName,
      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_GENERICS (String -> FastString
    fsLit String
    "V1") Unique
    v1TyConKey
    u1TyConName :: Name
    u1TyConName  = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_GENERICS (String -> FastString
    fsLit String
    "U1") Unique
    u1TyConKey
    par1TyConName :: Name
    par1TyConName  = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_GENERICS (String -> FastString
    fsLit String
    "Par1") Unique
    par1TyConKey
    rec1TyConName :: Name
    rec1TyConName  = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_GENERICS (String -> FastString
    fsLit String
    "Rec1") Unique
    rec1TyConKey
    k1TyConName :: Name
    k1TyConName  = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_GENERICS (String -> FastString
    fsLit String
    "K1") Unique
    k1TyConKey
    m1TyConName :: Name
    m1TyConName  = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_GENERICS (String -> FastString
    fsLit String
    "M1") Unique
    m1TyConKey

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

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

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

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

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

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

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

    metaDataDataConName :: Name
    metaDataDataConName  = Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_GENERICS (String -> FastString
    fsLit String
    "MetaData")  Unique
    metaDataDataConKey
    metaConsDataConName :: Name
    metaConsDataConName  = Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_GENERICS (String -> FastString
    fsLit String
    "MetaCons")  Unique
    metaConsDataConKey
    metaSelDataConName :: Name
    metaSelDataConName   = Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_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,
        eqStringName, cstringLengthName :: Name
    unpackCStringName :: Name
    unpackCStringName       = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_CSTRING (String -> FastString
    fsLit String
    "unpackCString#") Unique
    unpackCStringIdKey
    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
    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_BASE (String -> FastString
    fsLit String
    "eqString")  Unique
    eqStringIdKey
    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_BASE    (String -> FastString
    fsLit String
    "Functor") Unique
    functorClassKey
    fmapName :: Name
    fmapName          = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_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_BASE (String -> FastString
    fsLit String
    "Monad")  Unique
    monadClassKey
    thenMName :: Name
    thenMName          = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_BASE (String -> FastString
    fsLit String
    ">>")     Unique
    thenMClassOpKey
    bindMName :: Name
    bindMName          = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_BASE (String -> FastString
    fsLit String
    ">>=")    Unique
    bindMClassOpKey
    returnMName :: Name
    returnMName        = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_BASE (String -> FastString
    fsLit String
    "return") Unique
    returnMClassOpKey

    -- Class MonadFail
    monadFailClassName, failMName :: Name
    monadFailClassName :: Name
    monadFailClassName = Module -> FastString -> Unique -> Name
    clsQual Module
    mONAD_FAIL (String -> FastString
    fsLit String
    "MonadFail") Unique
    monadFailClassKey
    failMName :: Name
    failMName          = Module -> FastString -> Unique -> Name
    varQual Module
    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_BASE (String -> FastString
    fsLit String
    "Applicative") Unique
    applicativeClassKey
    apAName :: Name
    apAName              = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_BASE (String -> FastString
    fsLit String
    "<*>")         Unique
    apAClassOpKey
    pureAName :: Name
    pureAName            = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_BASE (String -> FastString
    fsLit String
    "pure")        Unique
    pureAClassOpKey
    thenAName :: Name
    thenAName            = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_BASE (String -> FastString
    fsLit String
    "*>")          Unique
    thenAClassOpKey

    -- Classes (Foldable, Traversable)
    foldableClassName, traversableClassName :: Name
    foldableClassName :: Name
    foldableClassName     = Module -> FastString -> Unique -> Name
    clsQual  Module
    dATA_FOLDABLE       (String -> FastString
    fsLit String
    "Foldable")    Unique
    foldableClassKey
    traversableClassName :: Name
    traversableClassName  = Module -> FastString -> Unique -> Name
    clsQual  Module
    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_BASE       (String -> FastString
    fsLit String
    "Semigroup") Unique
    semigroupClassKey
    sappendName :: Name
    sappendName        = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_BASE       (String -> FastString
    fsLit String
    "<>")        Unique
    sappendClassOpKey
    monoidClassName, memptyName, mappendName, mconcatName :: Name
    monoidClassName :: Name
    monoidClassName    = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_BASE       (String -> FastString
    fsLit String
    "Monoid")    Unique
    monoidClassKey
    memptyName :: Name
    memptyName         = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_BASE       (String -> FastString
    fsLit String
    "mempty")    Unique
    memptyClassOpKey
    mappendName :: Name
    mappendName        = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_BASE       (String -> FastString
    fsLit String
    "mappend")   Unique
    mappendClassOpKey
    mconcatName :: Name
    mconcatName        = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_BASE       (String -> FastString
    fsLit String
    "mconcat")   Unique
    mconcatClassOpKey

    -- AMP additions

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

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

    -- Functions for GHC extensions
    groupWithName, considerAccessibleName :: Name
    groupWithName :: Name
    groupWithName          = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_EXTS (String -> FastString
    fsLit String
    "groupWith")          Unique
    groupWithIdKey
    considerAccessibleName :: Name
    considerAccessibleName = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_EXTS (String -> FastString
    fsLit String
    "considerAccessible") Unique
    considerAccessibleIdKey

    -- Random PrelBase functions
    fromStringName, otherwiseIdName, foldrName, buildName, augmentName,
        mapName, appendName, assertName,
        breakpointName, breakpointCondName,
        opaqueTyConName, dollarName :: Name
    dollarName :: Name
    dollarName        = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_BASE (String -> FastString
    fsLit String
    "$")          Unique
    dollarIdKey
    otherwiseIdName :: Name
    otherwiseIdName   = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_BASE (String -> FastString
    fsLit String
    "otherwise")  Unique
    otherwiseIdKey
    foldrName :: Name
    foldrName         = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_BASE (String -> FastString
    fsLit String
    "foldr")      Unique
    foldrIdKey
    buildName :: Name
    buildName         = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_BASE (String -> FastString
    fsLit String
    "build")      Unique
    buildIdKey
    augmentName :: Name
    augmentName       = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_BASE (String -> FastString
    fsLit String
    "augment")    Unique
    augmentIdKey
    mapName :: Name
    mapName           = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_BASE (String -> FastString
    fsLit String
    "map")        Unique
    mapIdKey
    appendName :: Name
    appendName        = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_BASE (String -> FastString
    fsLit String
    "++")         Unique
    appendIdKey
    assertName :: Name
    assertName        = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_BASE (String -> FastString
    fsLit String
    "assert")     Unique
    assertIdKey
    breakpointName :: Name
    breakpointName    = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_BASE (String -> FastString
    fsLit String
    "breakpoint") Unique
    breakpointIdKey
    breakpointCondName :: Name
    breakpointCondName= Module -> FastString -> Unique -> Name
    varQual Module
    gHC_BASE (String -> FastString
    fsLit String
    "breakpointCond") Unique
    breakpointCondIdKey
    opaqueTyConName :: Name
    opaqueTyConName   = Module -> FastString -> Unique -> Name
    tcQual  Module
    gHC_BASE (String -> FastString
    fsLit String
    "Opaque")     Unique
    opaqueTyConKey
    fromStringName :: Name
    fromStringName = Module -> FastString -> Unique -> Name
    varQual Module
    dATA_STRING (String -> FastString
    fsLit String
    "fromString") Unique
    fromStringClassOpKey

    -- PrelTup
    fstName, sndName :: Name
    fstName :: Name
    fstName           = Module -> FastString -> Unique -> Name
    varQual Module
    dATA_TUPLE (String -> FastString
    fsLit String
    "fst") Unique
    fstIdKey
    sndName :: Name
    sndName           = Module -> FastString -> Unique -> Name
    varQual Module
    dATA_TUPLE (String -> FastString
    fsLit String
    "snd") Unique
    sndIdKey

    -- Module GHC.Num
    numClassName, fromIntegerName, minusName, negateName :: Name
    numClassName :: Name
    numClassName      = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_NUM (String -> FastString
    fsLit String
    "Num")         Unique
    numClassKey
    fromIntegerName :: Name
    fromIntegerName   = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_NUM (String -> FastString
    fsLit String
    "fromInteger") Unique
    fromIntegerClassOpKey
    minusName :: Name
    minusName         = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_NUM (String -> FastString
    fsLit String
    "-")           Unique
    minusClassOpKey
    negateName :: Name
    negateName        = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_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
       , integerEqName
       , integerNeName
       , integerLeName
       , integerGtName
       , integerLtName
       , integerGeName
       , integerAbsName
       , integerSignumName
       , integerCompareName
       , integerPopCountName
       , integerQuotName
       , integerRemName
       , integerDivName
       , integerModName
       , integerDivModName
       , integerQuotRemName
       , integerEncodeFloatName
       , integerEncodeDoubleName
       , integerGcdName
       , integerLcmName
       , integerAndName
       , integerOrName
       , integerXorName
       , integerComplementName
       , integerBitName
       , integerTestBitName
       , integerShiftLName
       , integerShiftRName
       , naturalToWordName
       , naturalToWordClampName
       , naturalEqName
       , naturalNeName
       , naturalGeName
       , naturalLeName
       , naturalGtName
       , naturalLtName
       , naturalCompareName
       , naturalPopCountName
       , naturalShiftRName
       , naturalShiftLName
       , naturalAddName
       , naturalSubName
       , naturalSubThrowName
       , naturalSubUnsafeName
       , naturalMulName
       , naturalSignumName
       , naturalNegateName
       , naturalQuotRemName
       , naturalQuotName
       , naturalRemName
       , naturalAndName
       , naturalAndNotName
       , naturalOrName
       , naturalXorName
       , naturalTestBitName
       , naturalBitName
       , naturalGcdName
       , naturalLcmName
       , naturalLog2Name
       , naturalLogBaseWordName
       , naturalLogBaseName
       , naturalPowModName
       , naturalSizeInBaseName
       , bignatFromWordListName
       :: Name

    bnbVarQual, bnnVarQual, bniVarQual :: String -> Unique -> Name
    bnbVarQual :: String -> Unique -> Name
    bnbVarQual String
    str Unique
    key = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_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_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_NUM_INTEGER (String -> FastString
    fsLit String
    str) Unique
    key

    -- Types and DataCons
    bignatFromWordListName :: Name
    bignatFromWordListName    = String -> Unique -> Name
    bnbVarQual String
    "bigNatFromWordList#"       Unique
    bignatFromWordListIdKey

    naturalToWordName :: Name
    naturalToWordName         = String -> Unique -> Name
    bnnVarQual String
    "naturalToWord#"            Unique
    naturalToWordIdKey
    naturalToWordClampName :: Name
    naturalToWordClampName    = String -> Unique -> Name
    bnnVarQual String
    "naturalToWordClamp#"       Unique
    naturalToWordClampIdKey
    naturalEqName :: Name
    naturalEqName             = String -> Unique -> Name
    bnnVarQual String
    "naturalEq#"                Unique
    naturalEqIdKey
    naturalNeName :: Name
    naturalNeName             = String -> Unique -> Name
    bnnVarQual String
    "naturalNe#"                Unique
    naturalNeIdKey
    naturalGeName :: Name
    naturalGeName             = String -> Unique -> Name
    bnnVarQual String
    "naturalGe#"                Unique
    naturalGeIdKey
    naturalLeName :: Name
    naturalLeName             = String -> Unique -> Name
    bnnVarQual String
    "naturalLe#"                Unique
    naturalLeIdKey
    naturalGtName :: Name
    naturalGtName             = String -> Unique -> Name
    bnnVarQual String
    "naturalGt#"                Unique
    naturalGtIdKey
    naturalLtName :: Name
    naturalLtName             = String -> Unique -> Name
    bnnVarQual String
    "naturalLt#"                Unique
    naturalLtIdKey
    naturalCompareName :: Name
    naturalCompareName        = String -> Unique -> Name
    bnnVarQual String
    "naturalCompare"            Unique
    naturalCompareIdKey
    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
    naturalSignumName :: Name
    naturalSignumName         = String -> Unique -> Name
    bnnVarQual String
    "naturalSignum"             Unique
    naturalSignumIdKey
    naturalNegateName :: Name
    naturalNegateName         = String -> Unique -> Name
    bnnVarQual String
    "naturalNegate"             Unique
    naturalNegateIdKey
    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
    integerEqName :: Name
    integerEqName             = String -> Unique -> Name
    bniVarQual String
    "integerEq#"                Unique
    integerEqIdKey
    integerNeName :: Name
    integerNeName             = String -> Unique -> Name
    bniVarQual String
    "integerNe#"                Unique
    integerNeIdKey
    integerLeName :: Name
    integerLeName             = String -> Unique -> Name
    bniVarQual String
    "integerLe#"                Unique
    integerLeIdKey
    integerGtName :: Name
    integerGtName             = String -> Unique -> Name
    bniVarQual String
    "integerGt#"                Unique
    integerGtIdKey
    integerLtName :: Name
    integerLtName             = String -> Unique -> Name
    bniVarQual String
    "integerLt#"                Unique
    integerLtIdKey
    integerGeName :: Name
    integerGeName             = String -> Unique -> Name
    bniVarQual String
    "integerGe#"                Unique
    integerGeIdKey
    integerAbsName :: Name
    integerAbsName            = String -> Unique -> Name
    bniVarQual String
    "integerAbs"                Unique
    integerAbsIdKey
    integerSignumName :: Name
    integerSignumName         = String -> Unique -> Name
    bniVarQual String
    "integerSignum"             Unique
    integerSignumIdKey
    integerCompareName :: Name
    integerCompareName        = String -> Unique -> Name
    bniVarQual String
    "integerCompare"            Unique
    integerCompareIdKey
    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.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_REAL (String -> FastString
    fsLit String
    "Rational")     Unique
    rationalTyConKey
    ratioTyConName :: Name
    ratioTyConName      = Module -> FastString -> Unique -> Name
    tcQual  Module
    gHC_REAL (String -> FastString
    fsLit String
    "Ratio")        Unique
    ratioTyConKey
    ratioDataConName :: Name
    ratioDataConName    = Module -> FastString -> Unique -> Name
    dcQual  Module
    gHC_REAL (String -> FastString
    fsLit String
    ":%")           Unique
    ratioDataConKey
    realClassName :: Name
    realClassName       = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_REAL (String -> FastString
    fsLit String
    "Real")         Unique
    realClassKey
    integralClassName :: Name
    integralClassName   = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_REAL (String -> FastString
    fsLit String
    "Integral")     Unique
    integralClassKey
    realFracClassName :: Name
    realFracClassName   = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_REAL (String -> FastString
    fsLit String
    "RealFrac")     Unique
    realFracClassKey
    fractionalClassName :: Name
    fractionalClassName = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_REAL (String -> FastString
    fsLit String
    "Fractional")   Unique
    fractionalClassKey
    fromRationalName :: Name
    fromRationalName    = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_REAL (String -> FastString
    fsLit String
    "fromRational") Unique
    fromRationalClassOpKey
    toIntegerName :: Name
    toIntegerName       = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_REAL (String -> FastString
    fsLit String
    "toInteger")    Unique
    toIntegerClassOpKey
    toRationalName :: Name
    toRationalName      = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_REAL (String -> FastString
    fsLit String
    "toRational")   Unique
    toRationalClassOpKey
    fromIntegralName :: Name
    fromIntegralName    = Module -> FastString -> Unique -> Name
    varQual  Module
    gHC_REAL (String -> FastString
    fsLit String
    "fromIntegral")Unique
    fromIntegralIdKey
    realToFracName :: Name
    realToFracName      = Module -> FastString -> Unique -> Name
    varQual  Module
    gHC_REAL (String -> FastString
    fsLit String
    "realToFrac")  Unique
    realToFracIdKey
    mkRationalBase2Name :: Name
    mkRationalBase2Name  = Module -> FastString -> Unique -> Name
    varQual  Module
    gHC_REAL  (String -> FastString
    fsLit String
    "mkRationalBase2")  Unique
    mkRationalBase2IdKey
    mkRationalBase10Name :: Name
    mkRationalBase10Name = Module -> FastString -> Unique -> Name
    varQual  Module
    gHC_REAL  (String -> FastString
    fsLit String
    "mkRationalBase10") Unique
    mkRationalBase10IdKey
    -- PrelFloat classes
    floatingClassName, realFloatClassName :: Name
    floatingClassName :: Name
    floatingClassName  = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_FLOAT (String -> FastString
    fsLit String
    "Floating")  Unique
    floatingClassKey
    realFloatClassName :: Name
    realFloatClassName = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_FLOAT (String -> FastString
    fsLit String
    "RealFloat") Unique
    realFloatClassKey

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

    -- Class Ix
    ixClassName :: Name
    ixClassName :: Name
    ixClassName = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_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
    tYPEABLE_INTERNAL (String -> FastString
    fsLit String
    "Typeable")       Unique
    typeableClassKey
    typeRepTyConName :: Name
    typeRepTyConName      = Module -> FastString -> Unique -> Name
    tcQual  Module
    tYPEABLE_INTERNAL (String -> FastString
    fsLit String
    "TypeRep")        Unique
    typeRepTyConKey
    someTypeRepTyConName :: Name
    someTypeRepTyConName   = Module -> FastString -> Unique -> Name
    tcQual Module
    tYPEABLE_INTERNAL (String -> FastString
    fsLit String
    "SomeTypeRep")    Unique
    someTypeRepTyConKey
    someTypeRepDataConName :: Name
    someTypeRepDataConName = Module -> FastString -> Unique -> Name
    dcQual Module
    tYPEABLE_INTERNAL (String -> FastString
    fsLit String
    "SomeTypeRep")    Unique
    someTypeRepDataConKey
    typeRepIdName :: Name
    typeRepIdName         = Module -> FastString -> Unique -> Name
    varQual Module
    tYPEABLE_INTERNAL (String -> FastString
    fsLit String
    "typeRep#")       Unique
    typeRepIdKey
    mkTrTypeName :: Name
    mkTrTypeName          = Module -> FastString -> Unique -> Name
    varQual Module
    tYPEABLE_INTERNAL (String -> FastString
    fsLit String
    "mkTrType")       Unique
    mkTrTypeKey
    mkTrConName :: Name
    mkTrConName           = Module -> FastString -> Unique -> Name
    varQual Module
    tYPEABLE_INTERNAL (String -> FastString
    fsLit String
    "mkTrCon")        Unique
    mkTrConKey
    mkTrAppName :: Name
    mkTrAppName           = Module -> FastString -> Unique -> Name
    varQual Module
    tYPEABLE_INTERNAL (String -> FastString
    fsLit String
    "mkTrApp")        Unique
    mkTrAppKey
    mkTrFunName :: Name
    mkTrFunName           = Module -> FastString -> Unique -> Name
    varQual Module
    tYPEABLE_INTERNAL (String -> FastString
    fsLit String
    "mkTrFun")        Unique
    mkTrFunKey
    typeNatTypeRepName :: Name
    typeNatTypeRepName    = Module -> FastString -> Unique -> Name
    varQual Module
    tYPEABLE_INTERNAL (String -> FastString
    fsLit String
    "typeNatTypeRep") Unique
    typeNatTypeRepKey
    typeSymbolTypeRepName :: Name
    typeSymbolTypeRepName = Module -> FastString -> Unique -> Name
    varQual Module
    tYPEABLE_INTERNAL (String -> FastString
    fsLit String
    "typeSymbolTypeRep") Unique
    typeSymbolTypeRepKey
    typeCharTypeRepName :: Name
    typeCharTypeRepName   = Module -> FastString -> Unique -> Name
    varQual Module
    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 :: 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

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

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

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

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

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

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

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

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

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

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

    -- Debug.Trace
    traceName          :: Name
    traceName :: Name
    traceName         = Module -> FastString -> Unique -> Name
    varQual Module
    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_ENUM (String -> FastString
    fsLit String
    "Enum")           Unique
    enumClassKey
    enumFromName :: Name
    enumFromName       = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_ENUM (String -> FastString
    fsLit String
    "enumFrom")       Unique
    enumFromClassOpKey
    enumFromToName :: Name
    enumFromToName     = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_ENUM (String -> FastString
    fsLit String
    "enumFromTo")     Unique
    enumFromToClassOpKey
    enumFromThenName :: Name
    enumFromThenName   = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_ENUM (String -> FastString
    fsLit String
    "enumFromThen")   Unique
    enumFromThenClassOpKey
    enumFromThenToName :: Name
    enumFromThenToName = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_ENUM (String -> FastString
    fsLit String
    "enumFromThenTo") Unique
    enumFromThenToClassOpKey
    boundedClassName :: Name
    boundedClassName   = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_ENUM (String -> FastString
    fsLit String
    "Bounded")        Unique
    boundedClassKey

    -- List functions
    concatName, filterName, zipName :: Name
    concatName :: Name
    concatName        = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_LIST (String -> FastString
    fsLit String
    "concat") Unique
    concatIdKey
    filterName :: Name
    filterName        = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_LIST (String -> FastString
    fsLit String
    "filter") Unique
    filterIdKey
    zipName :: Name
    zipName           = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_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_EXTS (String -> FastString
    fsLit String
    "IsList")    Unique
    isListClassKey
    fromListName :: Name
    fromListName    = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_EXTS (String -> FastString
    fsLit String
    "fromList")  Unique
    fromListClassOpKey
    fromListNName :: Name
    fromListNName   = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_EXTS (String -> FastString
    fsLit String
    "fromListN") Unique
    fromListNClassOpKey
    toListName :: Name
    toListName      = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_EXTS (String -> FastString
    fsLit String
    "toList")    Unique
    toListClassOpKey

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

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

    -- Class Read
    readClassName :: Name
    readClassName :: Name
    readClassName   = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_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_GENERICS (String -> FastString
    fsLit String
    "Generic")  Unique
    genClassKey
    gen1ClassName :: Name
    gen1ClassName = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_GENERICS (String -> FastString
    fsLit String
    "Generic1") Unique
    gen1ClassKey

    datatypeClassName :: Name
    datatypeClassName    = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_GENERICS (String -> FastString
    fsLit String
    "Datatype")    Unique
    datatypeClassKey
    constructorClassName :: Name
    constructorClassName = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_GENERICS (String -> FastString
    fsLit String
    "Constructor") Unique
    constructorClassKey
    selectorClassName :: Name
    selectorClassName    = Module -> FastString -> Unique -> Name
    clsQual Module
    gHC_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_GHCI (String -> FastString
    fsLit String
    "GHCiSandboxIO") Unique
    ghciIoClassKey
    ghciStepIoMName :: Name
    ghciStepIoMName = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_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_BASE  (String -> FastString
    fsLit String
    "thenIO")   Unique
    thenIOIdKey
    bindIOName :: Name
    bindIOName        = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_BASE  (String -> FastString
    fsLit String
    "bindIO")   Unique
    bindIOIdKey
    returnIOName :: Name
    returnIOName      = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_BASE  (String -> FastString
    fsLit String
    "returnIO") Unique
    returnIOIdKey
    failIOName :: Name
    failIOName        = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_IO    (String -> FastString
    fsLit String
    "failIO")   Unique
    failIOIdKey

    -- IO things
    printName :: Name
    printName :: Name
    printName         = Module -> FastString -> Unique -> Name
    varQual Module
    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_INT  (String -> FastString
    fsLit String
    "Int8")  Unique
    int8TyConKey
    int16TyConName :: Name
    int16TyConName    = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_INT  (String -> FastString
    fsLit String
    "Int16") Unique
    int16TyConKey
    int32TyConName :: Name
    int32TyConName    = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_INT  (String -> FastString
    fsLit String
    "Int32") Unique
    int32TyConKey
    int64TyConName :: Name
    int64TyConName    = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_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_WORD (String -> FastString
    fsLit String
    "Word8")  Unique
    word8TyConKey
    word16TyConName :: Name
    word16TyConName   = Module -> FastString -> Unique -> Name
    tcQual  Module
    gHC_WORD (String -> FastString
    fsLit String
    "Word16") Unique
    word16TyConKey
    word32TyConName :: Name
    word32TyConName   = Module -> FastString -> Unique -> Name
    tcQual  Module
    gHC_WORD (String -> FastString
    fsLit String
    "Word32") Unique
    word32TyConKey
    word64TyConName :: Name
    word64TyConName   = Module -> FastString -> Unique -> Name
    tcQual  Module
    gHC_WORD (String -> FastString
    fsLit String
    "Word64") Unique
    word64TyConKey

    -- PrelPtr module
    ptrTyConName, funPtrTyConName :: Name
    ptrTyConName :: Name
    ptrTyConName      = Module -> FastString -> Unique -> Name
    tcQual   Module
    gHC_PTR (String -> FastString
    fsLit String
    "Ptr")    Unique
    ptrTyConKey
    funPtrTyConName :: Name
    funPtrTyConName   = Module -> FastString -> Unique -> Name
    tcQual   Module
    gHC_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_STABLE (String -> FastString
    fsLit String
    "StablePtr")    Unique
    stablePtrTyConKey
    newStablePtrName :: Name
    newStablePtrName      = Module -> FastString -> Unique -> Name
    varQual  Module
    gHC_STABLE (String -> FastString
    fsLit String
    "newStablePtr") Unique
    newStablePtrIdKey

    -- Recursive-do notation
    monadFixClassName, mfixName :: Name
    monadFixClassName :: Name
    monadFixClassName  = Module -> FastString -> Unique -> Name
    clsQual Module
    mONAD_FIX (String -> FastString
    fsLit String
    "MonadFix") Unique
    monadFixClassKey
    mfixName :: Name
    mfixName           = Module -> FastString -> Unique -> Name
    varQual Module
    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
    aRROW (String -> FastString
    fsLit String
    "arr")       Unique
    arrAIdKey
    composeAName :: Name
    composeAName       = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_DESUGAR (String -> FastString
    fsLit String
    ">>>") Unique
    composeAIdKey
    firstAName :: Name
    firstAName         = Module -> FastString -> Unique -> Name
    varQual Module
    aRROW (String -> FastString
    fsLit String
    "first")     Unique
    firstAIdKey
    appAName :: Name
    appAName           = Module -> FastString -> Unique -> Name
    varQual Module
    aRROW (String -> FastString
    fsLit String
    "app")       Unique
    appAIdKey
    choiceAName :: Name
    choiceAName        = Module -> FastString -> Unique -> Name
    varQual Module
    aRROW (String -> FastString
    fsLit String
    "|||")       Unique
    choiceAIdKey
    loopAName :: Name
    loopAName          = Module -> FastString -> Unique -> Name
    varQual Module
    aRROW (String -> FastString
    fsLit String
    "loop")      Unique
    loopAIdKey

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

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

    -- Other classes, needed for type defaulting
    monadPlusClassName, randomClassName, randomGenClassName,
        isStringClassName :: Name
    monadPlusClassName :: Name
    monadPlusClassName  = Module -> FastString -> Unique -> Name
    clsQual Module
    mONAD (String -> FastString
    fsLit String
    "MonadPlus")      Unique
    monadPlusClassKey
    randomClassName :: Name
    randomClassName     = Module -> FastString -> Unique -> Name
    clsQual Module
    rANDOM (String -> FastString
    fsLit String
    "Random")        Unique
    randomClassKey
    randomGenClassName :: Name
    randomGenClassName  = Module -> FastString -> Unique -> Name
    clsQual Module
    rANDOM (String -> FastString
    fsLit String
    "RandomGen")     Unique
    randomGenClassKey
    isStringClassName :: Name
    isStringClassName   = Module -> FastString -> Unique -> Name
    clsQual Module
    dATA_STRING (String -> FastString
    fsLit String
    "IsString") Unique
    isStringClassKey

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

    -- Overloaded labels
    fromLabelClassOpName :: Name
    fromLabelClassOpName :: Name
    fromLabelClassOpName
     = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_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_RECORDS (String -> FastString
    fsLit String
    "HasField") Unique
    hasFieldClassNameKey

    -- Source Locations
    callStackTyConName, emptyCallStackName, pushCallStackName,
      srcLocDataConName :: Name
    callStackTyConName :: Name
    callStackTyConName
      = Module -> FastString -> Unique -> Name
    tcQual Module
    gHC_STACK_TYPES  (String -> FastString
    fsLit String
    "CallStack") Unique
    callStackTyConKey
    emptyCallStackName :: Name
    emptyCallStackName
      = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_STACK_TYPES (String -> FastString
    fsLit String
    "emptyCallStack") Unique
    emptyCallStackKey
    pushCallStackName :: Name
    pushCallStackName
      = Module -> FastString -> Unique -> Name
    varQual Module
    gHC_STACK_TYPES (String -> FastString
    fsLit String
    "pushCallStack") Unique
    pushCallStackKey
    srcLocDataConName :: Name
    srcLocDataConName
      = Module -> FastString -> Unique -> Name
    dcQual Module
    gHC_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_STATICPTR_INTERNAL (String -> FastString
    fsLit String
    "makeStatic") Unique
    makeStaticKey

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

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

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

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

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

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

    {-
    ************************************************************************
    *                                                                      *
    \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         = Arity -> Unique
    mkPreludeClassUnique Arity
    1
    enumClassKey :: Unique
    enumClassKey            = Arity -> Unique
    mkPreludeClassUnique Arity
    2
    eqClassKey :: Unique
    eqClassKey              = Arity -> Unique
    mkPreludeClassUnique Arity
    3
    floatingClassKey :: Unique
    floatingClassKey        = Arity -> Unique
    mkPreludeClassUnique Arity
    5
    fractionalClassKey :: Unique
    fractionalClassKey      = Arity -> Unique
    mkPreludeClassUnique Arity
    6
    integralClassKey :: Unique
    integralClassKey        = Arity -> Unique
    mkPreludeClassUnique Arity
    7
    monadClassKey :: Unique
    monadClassKey           = Arity -> Unique
    mkPreludeClassUnique Arity
    8
    dataClassKey :: Unique
    dataClassKey            = Arity -> Unique
    mkPreludeClassUnique Arity
    9
    functorClassKey :: Unique
    functorClassKey         = Arity -> Unique
    mkPreludeClassUnique Arity
    10
    numClassKey :: Unique
    numClassKey             = Arity -> Unique
    mkPreludeClassUnique Arity
    11
    ordClassKey :: Unique
    ordClassKey             = Arity -> Unique
    mkPreludeClassUnique Arity
    12
    readClassKey :: Unique
    readClassKey            = Arity -> Unique
    mkPreludeClassUnique Arity
    13
    realClassKey :: Unique
    realClassKey            = Arity -> Unique
    mkPreludeClassUnique Arity
    14
    realFloatClassKey :: Unique
    realFloatClassKey       = Arity -> Unique
    mkPreludeClassUnique Arity
    15
    realFracClassKey :: Unique
    realFracClassKey        = Arity -> Unique
    mkPreludeClassUnique Arity
    16
    showClassKey :: Unique
    showClassKey            = Arity -> Unique
    mkPreludeClassUnique Arity
    17
    ixClassKey :: Unique
    ixClassKey              = Arity -> Unique
    mkPreludeClassUnique Arity
    18

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

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

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

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

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

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

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

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

    -- KnownNat: see Note [KnownNat & KnownSymbol and EvLit] in GHC.Tc.Types.Evidence
    knownNatClassNameKey :: Unique
    knownNatClassNameKey :: Unique
    knownNatClassNameKey = Arity -> Unique
    mkPreludeClassUnique Arity
    42

    -- KnownSymbol: see Note [KnownNat & KnownSymbol and EvLit] in GHC.Tc.Types.Evidence
    knownSymbolClassNameKey :: Unique
    knownSymbolClassNameKey :: Unique
    knownSymbolClassNameKey = Arity -> Unique
    mkPreludeClassUnique Arity
    43

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

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

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

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

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

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

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

    addrPrimTyConKey, arrayPrimTyConKey, arrayArrayPrimTyConKey, 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, mutableArrayArrayPrimTyConKey,
        mutableByteArrayPrimTyConKey, orderingTyConKey, mVarPrimTyConKey,
        ratioTyConKey, rationalTyConKey, realWorldTyConKey, stablePtrPrimTyConKey,
        stablePtrTyConKey, eqTyConKey, heqTyConKey, ioPortPrimTyConKey,
        smallArrayPrimTyConKey, smallMutableArrayPrimTyConKey,
        stringTyConKey :: Unique
    addrPrimTyConKey :: Unique
    addrPrimTyConKey                        = Arity -> Unique
    mkPreludeTyConUnique  Arity
    1
    arrayPrimTyConKey :: Unique
    arrayPrimTyConKey                       = Arity -> Unique
    mkPreludeTyConUnique  Arity
    3
    boolTyConKey :: Unique
    boolTyConKey                            = Arity -> Unique
    mkPreludeTyConUnique  Arity
    4
    byteArrayPrimTyConKey :: Unique
    byteArrayPrimTyConKey                   = Arity -> Unique
    mkPreludeTyConUnique  Arity
    5
    stringTyConKey :: Unique
    stringTyConKey                          = Arity -> Unique
    mkPreludeTyConUnique  Arity
    6
    charPrimTyConKey :: Unique
    charPrimTyConKey                        = Arity -> Unique
    mkPreludeTyConUnique  Arity
    7
    charTyConKey :: Unique
    charTyConKey                            = Arity -> Unique
    mkPreludeTyConUnique  Arity
    8
    doublePrimTyConKey :: Unique
    doublePrimTyConKey                      = Arity -> Unique
    mkPreludeTyConUnique  Arity
    9
    doubleTyConKey :: Unique
    doubleTyConKey                          = Arity -> Unique
    mkPreludeTyConUnique Arity
    10
    floatPrimTyConKey :: Unique
    floatPrimTyConKey                       = Arity -> Unique
    mkPreludeTyConUnique Arity
    11
    floatTyConKey :: Unique
    floatTyConKey                           = Arity -> Unique
    mkPreludeTyConUnique Arity
    12
    funTyConKey :: Unique
    funTyConKey                             = Arity -> Unique
    mkPreludeTyConUnique Arity
    13
    intPrimTyConKey :: Unique
    intPrimTyConKey                         = Arity -> Unique
    mkPreludeTyConUnique Arity
    14
    intTyConKey :: Unique
    intTyConKey                             = Arity -> Unique
    mkPreludeTyConUnique Arity
    15
    int8PrimTyConKey :: Unique
    int8PrimTyConKey                        = Arity -> Unique
    mkPreludeTyConUnique Arity
    16
    int8TyConKey :: Unique
    int8TyConKey                            = Arity -> Unique
    mkPreludeTyConUnique Arity
    17
    int16PrimTyConKey :: Unique
    int16PrimTyConKey                       = Arity -> Unique
    mkPreludeTyConUnique Arity
    18
    int16TyConKey :: Unique
    int16TyConKey                           = Arity -> Unique
    mkPreludeTyConUnique Arity
    19
    int32PrimTyConKey :: Unique
    int32PrimTyConKey                       = Arity -> Unique
    mkPreludeTyConUnique Arity
    20
    int32TyConKey :: Unique
    int32TyConKey                           = Arity -> Unique
    mkPreludeTyConUnique Arity
    21
    int64PrimTyConKey :: Unique
    int64PrimTyConKey                       = Arity -> Unique
    mkPreludeTyConUnique Arity
    22
    int64TyConKey :: Unique
    int64TyConKey                           = Arity -> Unique
    mkPreludeTyConUnique Arity
    23
    integerTyConKey :: Unique
    integerTyConKey                         = Arity -> Unique
    mkPreludeTyConUnique Arity
    24
    naturalTyConKey :: Unique
    naturalTyConKey                         = Arity -> Unique
    mkPreludeTyConUnique Arity
    25

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

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

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

    nonEmptyTyConKey :: Unique
    nonEmptyTyConKey :: Unique
    nonEmptyTyConKey                        = Arity -> Unique
    mkPreludeTyConUnique Arity
    85

    -- Kind constructors
    liftedTypeKindTyConKey, unliftedTypeKindTyConKey,
      tYPETyConKey, liftedRepTyConKey, unliftedRepTyConKey,
      constraintKindTyConKey, levityTyConKey, runtimeRepTyConKey,
      vecCountTyConKey, vecElemTyConKey :: Unique
    liftedTypeKindTyConKey :: Unique
    liftedTypeKindTyConKey                  = Arity -> Unique
    mkPreludeTyConUnique Arity
    87
    unliftedTypeKindTyConKey :: Unique
    unliftedTypeKindTyConKey                = Arity -> Unique
    mkPreludeTyConUnique Arity
    88
    tYPETyConKey :: Unique
    tYPETyConKey                            = Arity -> Unique
    mkPreludeTyConUnique Arity
    89
    constraintKindTyConKey :: Unique
    constraintKindTyConKey                  = Arity -> Unique
    mkPreludeTyConUnique Arity
    92
    levityTyConKey :: Unique
    levityTyConKey                          = Arity -> Unique
    mkPreludeTyConUnique Arity
    94
    runtimeRepTyConKey :: Unique
    runtimeRepTyConKey                      = Arity -> Unique
    mkPreludeTyConUnique Arity
    95
    vecCountTyConKey :: Unique
    vecCountTyConKey                        = Arity -> Unique
    mkPreludeTyConUnique Arity
    96
    vecElemTyConKey :: Unique
    vecElemTyConKey                         = Arity -> Unique
    mkPreludeTyConUnique Arity
    97
    liftedRepTyConKey :: Unique
    liftedRepTyConKey                       = Arity -> Unique
    mkPreludeTyConUnique Arity
    98
    unliftedRepTyConKey :: Unique
    unliftedRepTyConKey                     = Arity -> Unique
    mkPreludeTyConUnique Arity
    99

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

    unknownTyConKey, unknown1TyConKey, unknown2TyConKey, unknown3TyConKey,
        opaqueTyConKey :: Unique
    unknownTyConKey :: Unique
    unknownTyConKey                         = Arity -> Unique
    mkPreludeTyConUnique Arity
    129
    unknown1TyConKey :: Unique
    unknown1TyConKey                        = Arity -> Unique
    mkPreludeTyConUnique Arity
    130
    unknown2TyConKey :: Unique
    unknown2TyConKey                        = Arity -> Unique
    mkPreludeTyConUnique Arity
    131
    unknown3TyConKey :: Unique
    unknown3TyConKey                        = Arity -> Unique
    mkPreludeTyConUnique Arity
    132
    opaqueTyConKey :: Unique
    opaqueTyConKey                          = Arity -> Unique
    mkPreludeTyConUnique Arity
    133

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

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

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

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

    rec0TyConKey :: Unique
    rec0TyConKey  = Arity -> Unique
    mkPreludeTyConUnique Arity
    149
    d1TyConKey :: Unique
    d1TyConKey    = Arity -> Unique
    mkPreludeTyConUnique Arity
    151
    c1TyConKey :: Unique
    c1TyConKey    = Arity -> Unique
    mkPreludeTyConUnique Arity
    152
    s1TyConKey :: Unique
    s1TyConKey    = Arity -> Unique
    mkPreludeTyConUnique Arity
    153
    noSelTyConKey :: Unique
    noSelTyConKey = Arity -> Unique
    mkPreludeTyConUnique Arity
    154

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

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

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

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

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

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

    anyTyConKey :: Unique
    anyTyConKey :: Unique
    anyTyConKey = Arity -> Unique
    mkPreludeTyConUnique Arity
    186

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

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

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

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

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

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

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

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

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

    multMulTyConKey :: Unique
    multMulTyConKey :: Unique
    multMulTyConKey = Arity -> Unique
    mkPreludeTyConUnique Arity
    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  = Arity -> Unique
    mkPreludeTyConUnique Arity
    400
    typeCharKindConNameKey :: Unique
    typeCharKindConNameKey    = Arity -> Unique
    mkPreludeTyConUnique Arity
    401
    typeNatAddTyFamNameKey :: Unique
    typeNatAddTyFamNameKey    = Arity -> Unique
    mkPreludeTyConUnique Arity
    402
    typeNatMulTyFamNameKey :: Unique
    typeNatMulTyFamNameKey    = Arity -> Unique
    mkPreludeTyConUnique Arity
    403
    typeNatExpTyFamNameKey :: Unique
    typeNatExpTyFamNameKey    = Arity -> Unique
    mkPreludeTyConUnique Arity
    404
    typeNatSubTyFamNameKey :: Unique
    typeNatSubTyFamNameKey    = Arity -> Unique
    mkPreludeTyConUnique Arity
    405
    typeSymbolCmpTyFamNameKey :: Unique
    typeSymbolCmpTyFamNameKey = Arity -> Unique
    mkPreludeTyConUnique Arity
    406
    typeNatCmpTyFamNameKey :: Unique
    typeNatCmpTyFamNameKey    = Arity -> Unique
    mkPreludeTyConUnique Arity
    407
    typeCharCmpTyFamNameKey :: Unique
    typeCharCmpTyFamNameKey   = Arity -> Unique
    mkPreludeTyConUnique Arity
    408
    typeLeqCharTyFamNameKey :: Unique
    typeLeqCharTyFamNameKey   = Arity -> Unique
    mkPreludeTyConUnique Arity
    409
    typeNatDivTyFamNameKey :: Unique
    typeNatDivTyFamNameKey  = Arity -> Unique
    mkPreludeTyConUnique Arity
    410
    typeNatModTyFamNameKey :: Unique
    typeNatModTyFamNameKey  = Arity -> Unique
    mkPreludeTyConUnique Arity
    411
    typeNatLogTyFamNameKey :: Unique
    typeNatLogTyFamNameKey  = Arity -> Unique
    mkPreludeTyConUnique Arity
    412
    typeConsSymbolTyFamNameKey :: Unique
    typeConsSymbolTyFamNameKey = Arity -> Unique
    mkPreludeTyConUnique Arity
    413
    typeUnconsSymbolTyFamNameKey :: Unique
    typeUnconsSymbolTyFamNameKey = Arity -> Unique
    mkPreludeTyConUnique Arity
    414
    typeCharToNatTyFamNameKey :: Unique
    typeCharToNatTyFamNameKey = Arity -> Unique
    mkPreludeTyConUnique Arity
    415
    typeNatToCharTyFamNameKey :: Unique
    typeNatToCharTyFamNameKey = Arity -> Unique
    mkPreludeTyConUnique Arity
    416

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

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

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

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

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

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

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

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

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

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

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

    trTyConTyConKey, trTyConDataConKey,
      trModuleTyConKey, trModuleDataConKey,
      trNameTyConKey, trNameSDataConKey, trNameDDataConKey,
      trGhcPrimModuleKey, kindRepTyConKey,
      typeLitSortTyConKey :: Unique
    trTyConTyConKey :: Unique
    trTyConTyConKey                         = Arity -> Unique
    mkPreludeDataConUnique Arity
    40
    trTyConDataConKey :: Unique
    trTyConDataConKey                       = Arity -> Unique
    mkPreludeDataConUnique Arity
    41
    trModuleTyConKey :: Unique
    trModuleTyConKey                        = Arity -> Unique
    mkPreludeDataConUnique Arity
    42
    trModuleDataConKey :: Unique
    trModuleDataConKey                      = Arity -> Unique
    mkPreludeDataConUnique Arity
    43
    trNameTyConKey :: Unique
    trNameTyConKey                          = Arity -> Unique
    mkPreludeDataConUnique Arity
    44
    trNameSDataConKey :: Unique
    trNameSDataConKey                       = Arity -> Unique
    mkPreludeDataConUnique Arity
    45
    trNameDDataConKey :: Unique
    trNameDDataConKey                       = Arity -> Unique
    mkPreludeDataConUnique Arity
    46
    trGhcPrimModuleKey :: Unique
    trGhcPrimModuleKey                      = Arity -> Unique
    mkPreludeDataConUnique Arity
    47
    kindRepTyConKey :: Unique
    kindRepTyConKey                         = Arity -> Unique
    mkPreludeDataConUnique Arity
    48
    typeLitSortTyConKey :: Unique
    typeLitSortTyConKey                     = Arity -> Unique
    mkPreludeDataConUnique Arity
    49

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

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

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

    -- 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
      = forall a b. (a -> b) -> [a] -> [b]
    map Arity -> Unique
    mkPreludeDataConUnique [Arity
    75..Arity
    87]

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

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

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

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

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

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

    -- Multiplicity

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

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

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

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

    wildCardKey, absentErrorIdKey, augmentIdKey, appendIdKey,
        buildIdKey, errorIdKey, foldrIdKey, recSelErrorIdKey,
        seqIdKey, eqStringIdKey,
        noMethodBindingErrorIdKey, nonExhaustiveGuardsErrorIdKey,
        runtimeErrorIdKey, patErrorIdKey, voidPrimIdKey,
        realWorldPrimIdKey, recConErrorIdKey,
        unpackCStringUtf8IdKey, unpackCStringAppendIdKey,
        unpackCStringFoldrIdKey, unpackCStringFoldrUtf8IdKey,
        unpackCStringIdKey,
        typeErrorIdKey, divIntIdKey, modIntIdKey,
        absentSumFieldErrorIdKey, cstringLengthIdKey,
        raiseOverflowIdKey, raiseUnderflowIdKey, raiseDivZeroIdKey
        :: Unique

    wildCardKey :: Unique
    wildCardKey                   = Arity -> Unique
    mkPreludeMiscIdUnique  Arity
    0  -- See Note [WildCard binders]
    absentErrorIdKey :: Unique
    absentErrorIdKey              = Arity -> Unique
    mkPreludeMiscIdUnique  Arity
    1
    augmentIdKey :: Unique
    augmentIdKey                  = Arity -> Unique
    mkPreludeMiscIdUnique  Arity
    2
    appendIdKey :: Unique
    appendIdKey                   = Arity -> Unique
    mkPreludeMiscIdUnique  Arity
    3
    buildIdKey :: Unique
    buildIdKey                    = Arity -> Unique
    mkPreludeMiscIdUnique  Arity
    4
    errorIdKey :: Unique
    errorIdKey                    = Arity -> Unique
    mkPreludeMiscIdUnique  Arity
    5
    foldrIdKey :: Unique
    foldrIdKey                    = Arity -> Unique
    mkPreludeMiscIdUnique  Arity
    6
    recSelErrorIdKey :: Unique
    recSelErrorIdKey              = Arity -> Unique
    mkPreludeMiscIdUnique  Arity
    7
    seqIdKey :: Unique
    seqIdKey                      = Arity -> Unique
    mkPreludeMiscIdUnique  Arity
    8
    absentSumFieldErrorIdKey :: Unique
    absentSumFieldErrorIdKey      = Arity -> Unique
    mkPreludeMiscIdUnique  Arity
    9
    eqStringIdKey :: Unique
    eqStringIdKey                 = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    10
    noMethodBindingErrorIdKey :: Unique
    noMethodBindingErrorIdKey     = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    11
    nonExhaustiveGuardsErrorIdKey :: Unique
    nonExhaustiveGuardsErrorIdKey = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    12
    runtimeErrorIdKey :: Unique
    runtimeErrorIdKey             = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    13
    patErrorIdKey :: Unique
    patErrorIdKey                 = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    14
    realWorldPrimIdKey :: Unique
    realWorldPrimIdKey            = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    15
    recConErrorIdKey :: Unique
    recConErrorIdKey              = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    16
    unpackCStringUtf8IdKey :: Unique
    unpackCStringUtf8IdKey        = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    17
    unpackCStringAppendIdKey :: Unique
    unpackCStringAppendIdKey      = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    18
    unpackCStringFoldrIdKey :: Unique
    unpackCStringFoldrIdKey       = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    19

    unpackCStringIdKey :: Unique
    unpackCStringIdKey            = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    20
    unpackCStringFoldrUtf8IdKey :: Unique
    unpackCStringFoldrUtf8IdKey   = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    21
    voidPrimIdKey :: Unique
    voidPrimIdKey                 = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    22
    typeErrorIdKey :: Unique
    typeErrorIdKey                = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    23
    divIntIdKey :: Unique
    divIntIdKey                   = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    24
    modIntIdKey :: Unique
    modIntIdKey                   = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    25
    cstringLengthIdKey :: Unique
    cstringLengthIdKey            = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    26
    raiseOverflowIdKey :: Unique
    raiseOverflowIdKey            = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    27
    raiseUnderflowIdKey :: Unique
    raiseUnderflowIdKey           = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    28
    raiseDivZeroIdKey :: Unique
    raiseDivZeroIdKey             = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    29

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

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

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

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

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

    breakpointIdKey, breakpointCondIdKey :: Unique
    breakpointIdKey :: Unique
    breakpointIdKey               = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    110
    breakpointCondIdKey :: Unique
    breakpointCondIdKey           = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    111

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

    mapIdKey, groupWithIdKey, dollarIdKey, coercionTokenIdKey, considerAccessibleIdKey :: Unique
    mapIdKey :: Unique
    mapIdKey                = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    121
    groupWithIdKey :: Unique
    groupWithIdKey          = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    122
    dollarIdKey :: Unique
    dollarIdKey             = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    123
    coercionTokenIdKey :: Unique
    coercionTokenIdKey      = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    124
    noinlineIdKey :: Unique
    noinlineIdKey           = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    125
    considerAccessibleIdKey :: Unique
    considerAccessibleIdKey = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    126

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

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

    magicDictKey :: Unique
    magicDictKey :: Unique
    magicDictKey                  = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    156

    coerceKey :: Unique
    coerceKey :: Unique
    coerceKey                     = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    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                    = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    158

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

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

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

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

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

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

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

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

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

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

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

    proxyHashKey :: Unique
    proxyHashKey :: Unique
    proxyHashKey = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    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            = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    503
    mkTrTypeKey :: Unique
    mkTrTypeKey           = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    504
    mkTrConKey :: Unique
    mkTrConKey            = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    505
    mkTrAppKey :: Unique
    mkTrAppKey            = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    506
    typeNatTypeRepKey :: Unique
    typeNatTypeRepKey     = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    507
    typeSymbolTypeRepKey :: Unique
    typeSymbolTypeRepKey  = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    508
    typeCharTypeRepKey :: Unique
    typeCharTypeRepKey    = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    509
    typeRepIdKey :: Unique
    typeRepIdKey          = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    510
    mkTrFunKey :: Unique
    mkTrFunKey            = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    511

    -- Representations for primitive types
    trTYPEKey
      , trTYPE'PtrRepLiftedKey
      , trRuntimeRepKey
      , tr'PtrRepLiftedKey
      , trLiftedRepKey
      :: Unique
    trTYPEKey :: Unique
    trTYPEKey              = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    512
    trTYPE'PtrRepLiftedKey :: Unique
    trTYPE'PtrRepLiftedKey = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    513
    trRuntimeRepKey :: Unique
    trRuntimeRepKey        = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    514
    tr'PtrRepLiftedKey :: Unique
    tr'PtrRepLiftedKey     = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    515
    trLiftedRepKey :: Unique
    trLiftedRepKey         = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    516

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

    -- Dynamic
    toDynIdKey :: Unique
    toDynIdKey :: Unique
    toDynIdKey            = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    523

    bitIntegerIdKey :: Unique
    bitIntegerIdKey :: Unique
    bitIntegerIdKey       = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    550

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

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

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

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

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

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

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

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

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

    integerFromNaturalIdKey
       , integerToNaturalClampIdKey
       , integerToNaturalThrowIdKey
       , integerToNaturalIdKey
       , integerToWordIdKey
       , integerToIntIdKey
       , integerToWord64IdKey
       , integerToInt64IdKey
       , integerAddIdKey
       , integerMulIdKey
       , integerSubIdKey
       , integerNegateIdKey
       , integerEqIdKey
       , integerNeIdKey
       , integerLeIdKey
       , integerGtIdKey
       , integerLtIdKey
       , integerGeIdKey
       , integerAbsIdKey
       , integerSignumIdKey
       , integerCompareIdKey
       , integerPopCountIdKey
       , integerQuotIdKey
       , integerRemIdKey
       , integerDivIdKey
       , integerModIdKey
       , integerDivModIdKey
       , integerQuotRemIdKey
       , integerEncodeFloatIdKey
       , integerEncodeDoubleIdKey
       , integerGcdIdKey
       , integerLcmIdKey
       , integerAndIdKey
       , integerOrIdKey
       , integerXorIdKey
       , integerComplementIdKey
       , integerBitIdKey
       , integerTestBitIdKey
       , integerShiftLIdKey
       , integerShiftRIdKey
       , integerFromWordIdKey
       , integerFromWord64IdKey
       , integerFromInt64IdKey
       , naturalToWordIdKey
       , naturalToWordClampIdKey
       , naturalEqIdKey
       , naturalNeIdKey
       , naturalGeIdKey
       , naturalLeIdKey
       , naturalGtIdKey
       , naturalLtIdKey
       , naturalCompareIdKey
       , naturalPopCountIdKey
       , naturalShiftRIdKey
       , naturalShiftLIdKey
       , naturalAddIdKey
       , naturalSubIdKey
       , naturalSubThrowIdKey
       , naturalSubUnsafeIdKey
       , naturalMulIdKey
       , naturalSignumIdKey
       , naturalNegateIdKey
       , naturalQuotRemIdKey
       , naturalQuotIdKey
       , naturalRemIdKey
       , naturalAndIdKey
       , naturalAndNotIdKey
       , naturalOrIdKey
       , naturalXorIdKey
       , naturalTestBitIdKey
       , naturalBitIdKey
       , naturalGcdIdKey
       , naturalLcmIdKey
       , naturalLog2IdKey
       , naturalLogBaseWordIdKey
       , naturalLogBaseIdKey
       , naturalPowModIdKey
       , naturalSizeInBaseIdKey
       , bignatFromWordListIdKey
       :: Unique

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

    naturalToWordIdKey :: Unique
    naturalToWordIdKey         = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    650
    naturalToWordClampIdKey :: Unique
    naturalToWordClampIdKey    = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    651
    naturalEqIdKey :: Unique
    naturalEqIdKey             = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    652
    naturalNeIdKey :: Unique
    naturalNeIdKey             = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    653
    naturalGeIdKey :: Unique
    naturalGeIdKey             = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    654
    naturalLeIdKey :: Unique
    naturalLeIdKey             = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    655
    naturalGtIdKey :: Unique
    naturalGtIdKey             = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    656
    naturalLtIdKey :: Unique
    naturalLtIdKey             = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    657
    naturalCompareIdKey :: Unique
    naturalCompareIdKey        = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    658
    naturalPopCountIdKey :: Unique
    naturalPopCountIdKey       = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    659
    naturalShiftRIdKey :: Unique
    naturalShiftRIdKey         = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    660
    naturalShiftLIdKey :: Unique
    naturalShiftLIdKey         = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    661
    naturalAddIdKey :: Unique
    naturalAddIdKey            = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    662
    naturalSubIdKey :: Unique
    naturalSubIdKey            = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    663
    naturalSubThrowIdKey :: Unique
    naturalSubThrowIdKey       = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    664
    naturalSubUnsafeIdKey :: Unique
    naturalSubUnsafeIdKey      = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    665
    naturalMulIdKey :: Unique
    naturalMulIdKey            = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    666
    naturalSignumIdKey :: Unique
    naturalSignumIdKey         = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    667
    naturalNegateIdKey :: Unique
    naturalNegateIdKey         = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    668
    naturalQuotRemIdKey :: Unique
    naturalQuotRemIdKey        = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    669
    naturalQuotIdKey :: Unique
    naturalQuotIdKey           = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    670
    naturalRemIdKey :: Unique
    naturalRemIdKey            = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    671
    naturalAndIdKey :: Unique
    naturalAndIdKey            = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    672
    naturalAndNotIdKey :: Unique
    naturalAndNotIdKey         = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    673
    naturalOrIdKey :: Unique
    naturalOrIdKey             = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    674
    naturalXorIdKey :: Unique
    naturalXorIdKey            = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    675
    naturalTestBitIdKey :: Unique
    naturalTestBitIdKey        = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    676
    naturalBitIdKey :: Unique
    naturalBitIdKey            = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    677
    naturalGcdIdKey :: Unique
    naturalGcdIdKey            = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    678
    naturalLcmIdKey :: Unique
    naturalLcmIdKey            = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    679
    naturalLog2IdKey :: Unique
    naturalLog2IdKey           = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    680
    naturalLogBaseWordIdKey :: Unique
    naturalLogBaseWordIdKey    = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    681
    naturalLogBaseIdKey :: Unique
    naturalLogBaseIdKey        = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    682
    naturalPowModIdKey :: Unique
    naturalPowModIdKey         = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    683
    naturalSizeInBaseIdKey :: Unique
    naturalSizeInBaseIdKey     = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    684

    bignatFromWordListIdKey :: Unique
    bignatFromWordListIdKey    = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    690

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

    -- Creating rationals at runtime.
    mkRationalBase2IdKey, mkRationalBase10IdKey :: Unique
    mkRationalBase2IdKey :: Unique
    mkRationalBase2IdKey  = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    700
    mkRationalBase10IdKey :: Unique
    mkRationalBase10IdKey = Arity -> Unique
    mkPreludeMiscIdUnique Arity
    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
            ]
            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 forall a. [a] -> [a] -> [a]
    ++ [Unique]
    numericClassKeys
                      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 = forall a b. (a -> b) -> [a] -> [b]
    map forall a. Uniquable a => a -> Unique
    getUnique [Name]
    interactiveClassNames

    {-
    ************************************************************************
    *                                                                      *
       Semi-builtin names
    *                                                                      *
    ************************************************************************

    GHCi's :info command will usually filter out instances mentioning types whose
    names are not in scope. GHCi makes an exception for some commonly used names,
    such as Data.Kind.Type, which may not actually be in scope but should be
    treated as though they were in scope. The list in the definition of
    pretendNameIsInScope below contains these commonly used names.

    -}

    pretendNameIsInScope :: Name -> Bool
    pretendNameIsInScope :: Name -> Bool
    pretendNameIsInScope Name
    n
      = forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
    any (Name
    n forall a. Uniquable a => a -> Unique -> Bool
    `hasKey`)
        [ Unique
    liftedTypeKindTyConKey, Unique
    unliftedTypeKindTyConKey
        , Unique
    liftedDataConKey, Unique
    unliftedDataConKey
        , Unique
    tYPETyConKey
        , Unique
    runtimeRepTyConKey, Unique
    boxedRepDataConKey ]