A1     #Given an expr (normally a CoreApp) 6 tell if it is an application of a selector function ; to a data object. Selector functions consist of a single < CoreCase statement with the only alternative. Application = must be exactly to one argument. The case alternative must 8 be a constructor application to field selectors, and 1 the return value must be one of the selectors. ? If the analysis condition is satisfied, constructor name and J a field index are returned. Otherwise empty string and -1 are returned. $ The index returned is zero-based.  FFor each property, an encoding (to String) and decoding (from String)  functions should be defined. (arbitrary property to a string to store -from stored string to property value or fail FFor each annotable object, unique key should be generated, to be used 5 with the top level map in the annotations database. AAnnotations database: a two-level map to hold property mappings  for each of annotated objects. GGiven an annotable object, append a property with given name and value ' to the existing annotations database. annotable object pair of name and value existing annotations database updated annotations database annotable object property name annotations database returned value or nothing JGiven the two annotation sets, combine them into one. If the same object G is annotated in both sets, annotations are combines for such object, ' and left annotations take precedence.     :Build a map of primitive specifications given the list of G primitive description records. This as well may be used by frontends. (Specifications map of normal primitives DGiven the linked Core, build annotations for all primitives defined B that belong to the given set of primitives, that is, their names < are member keys of the given primitives specification map. CGiven the linked Core, build annotations for all normal primitives  that is, belonging to the .      .Given a function, return a list of arguments. 2 True is strict in that argument, False is not.  [] is unknown strictness +Determine missing (unreachable) functions.  All functions called except All functions defined 3Determine missing (unreachable) data constructors.  All ctors called\used in patterns except All ctors defined/ portable experimentalgolubovsky@gmail.comDRename all functions in the Core given the map of old to new names. MRename all data objects (LHS of data XXX) given the map of old to new names. LRename all data constructors in the Core given the map of old to new names. !Non-crashing version of coreCtor !Non-crashing version of coreData 9 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:; <      !"#$%&$%'$%($%)$%*$%+$%,$%-$%.$%/$%0$%1$23$24$25$26$27$28$29$2:$2;$2<$2=$2>$2?$2@ABCABDABEABFABGABHABIABJABKALMALNAOPAQRASTASUASVAWXAWYAZ[A\]A\^A\_A\`A\aA\bA\cA\dA\eAfgAfhAfiAfjAfkAflAfmAfnAfoAfpAfqAfrAfsAftAfuAfvAfwAfxAfyAfzAf{Af|Af}A~AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABABALALALALALALALALALALALALALALALALALALALALALALALALALALALALALAL AL AL AL AL ALALALALALALALALALALALALALALALALALALAL AL!AL"AL#AL$AL%AL&AL'AL(AL)AL*AL+AL,AL-AL.AL.AL/AL0AL1AL2AL2AL3AL4AL5AL5AL6AL7AL8AL9AL:AL;AL<AL=AL>AL?AL9AL@ALAALBALCALDALEALFALGALHALIALJALKALLALMALNALOALPALIALQALRALSALTALUALVALWX ycextra-0.1Yhc.Core.SelectorYhc.Core.AnnotationYhc.Core.AnnotatePrimsYhc.Core.StrictAnnoYhc.Core.UnreachableYhc.Core.MapNamesYhc.Core.ExtraYhc.Core.PrimAnnoRawcoreSelectorIndex CoreProperty toAnnString fromAnnString CoreAnnotabletoAnnotationKeyCoreAnnotations addAnnotation getAnnotationcombineAnnotations CoreTypeSigCoreStrictnessbuildPrimSpecMapnormPrimSpecMap buildPrimAnnobuildNormPrimAnnocoreStrictAnnocoreUnreachableFuncscoreUnreachableDatas mapFunNames mapDataNames mapConNames coreCtorMaybe coreDataMaybe rawPrimAnno intersectListsccSortuniplate-1.5.1Data.Generics.UniplateOnuniplateOnList contextsOnholesOn descendOnM descendOn rewriteOnM rewriteOn transformOnM transformOn childrenOn universeOn BiplateTypeData.Generics.UniplateparaholescontextsdescendMdescendrewriteMrewrite transformM transformchildrenuniverse UniplateTypeuniplateUniplate yhccore-0.9.1Yhc.Core.Uniplate contextsExpr descendExprM descendExpr rewriteExprM rewriteExprtransformExprM transformExpr universeExpr childrenExpr Yhc.Core.Type patVariables fromPatLitYhc.Core.CaseElimination coreCaseElimYhc.Core.Clean coreCleanYhc.Core.Equal coreExpr1 eqCoreExpr1 CoreExpr1Yhc.Core.HaskellcoreHaskellDirect coreHaskell Yhc.Core.HtmlcoreHtmlYhc.Core.InlinecoreInlineFuncLambdacoreInlineFunc coreInline InlineNone InlineAlias InlineForwardInlineCallOnce InlineFull InlineModeYhc.Core.InvariantensureInvariantsensureInvariantcheckInvariantcheckInvariants NoCoreLet NoCorePos CoreAppFun CoreAppCon NoEmptyApp CoreCaseVar NoCaseDefaultNoCaseDefaultOne NoCaseConstNoRecursiveLet NoCoreLamNoPartialAppPrimNoPartialAppConConsecutiveFuncsUniqueVarsFuncUniqueVarsCoreFuncArityAtMostOneFuncArityExactlyOne InvariantYhc.Core.Overlay coreOverlayYhc.Core.StrictnesscoreStrictness Yhc.Core.PrimcoreHaskellTypescoreHaskellPrims corePrimMaybecorePrimcoreBytecodePrims corePrims primArity PrimTypeAnyPrimTypeUnknownPrimTypeHaskellPrimIOPrimInt PrimInteger PrimDouble PrimFloatPrimChar PrimStringPrimBoolPrimTypeprimOpprimEval primStrictprimTypeprimNamePrimPrimSeqPrimOrdPrimAddPrimSubPrimMulPrimDivPrimRemPrimQuot PrimQuotRemPrimNegPrimAbs PrimSignumPrimEqPrimNePrimLtPrimGtPrimLePrimGePrimCast PrimHaskell PrimOtherPrimOpYhc.Core.ReachablecoreReachableMap coreReachableYhc.Core.RecursiveLet isCoreLetRecreduceRecursiveLetremoveRecursiveLetYhc.Core.Saturated coreSaturatedYhc.Core.SerialiseloadCoresaveCore Yhc.Core.ShowisCoreOperatorshowCoreExprGroupYhc.Core.ShowRawshowRawShowRawYhc.Core.SimplifycoreSimplifyExprUniqueExtcoreSimplifyExprUniquecoreSimplifyCaseLetcoreSimplifyCaseCasecoreSimplifyCaseConcoreSimplifyExpr coreSimplifyYhc.Core.FreeVaruniqueBoundVarsFuncuniqueBoundVarsCoreuniqueBoundVarsWithuniqueBoundVarsWithoutuniqueBoundVarsvariableSupplyYhc.Core.FreeVar3replaceFreeVars countFreeVarcollectFreeVarscollectBoundVarscollectAllVars Yhc.Core.Play allCoreVar mapUnderCoreM mapUnderCore mapOverCoreallCoresetChildrenCoregetChildrenCorePlayCoreYhc.Core.UniqueNameuniqueFuncsRenameuniqueFuncsSplituniqueFuncsNext uniqueJoin uniqueSplituniqueNamesNextuniverseExprVar uniplateExpr UniplateExprcoreFuncMapMaybe coreFuncMap toCoreFuncMapfromCoreFuncMapcoreDataTypeJoincoreDataTypeSplitapplyFuncCoreMapplyBodyCoreM applyCtorData applyDataCore applyCtorCore applyFuncCore applyBodyFunc applyBodyCorecoreDatacoreCtor coreFieldCtor coreCtorData coreFieldDatacoreFieldCtorMaybecoreCtorDataMaybecoreFieldDataMaybe coreFuncMaybecoreFunc dropModule remCorePosisCoreLitSmall exprToPat patToExprisPatConisPatLit isPatDefault isCoreInt isCoreChr isCoreStr isCoreLit isCoreCase isCoreLet isCorePos isCoreLam isCoreFun isCoreVar isCoreCon fromCoreLam fromCoreLet fromCoreApp fromCoreFun fromCoreVar fromCoreCon fromCoreLitcoreLamcoreLetcoreAppcoreFuncArgList coreFuncArity isCorePrim isCoreFunc CoreVarName CoreFuncName CoreDataName CoreCtorName CoreFieldName coreFuncs coreDatas coreImportscoreNameCore coreDataCtors coreDataTypes coreDataNameCoreDatacoreCtorFields coreCtorNameCoreCtor coreFuncBody coreFuncArgs coreFuncNameCoreFunc corePrimTypescorePrimImport corePrimConvcorePrimExternal corePrimArityCorePrim CoreFuncMapCoreConCoreVarCoreFunCoreAppCoreLamCoreCaseCoreLetCorePosCoreLitCoreExprCoreInt CoreIntegerCoreChrCoreStr CoreFloat CoreDoublepatVarspatConPatConpatLitPatLit PatDefaultCorePat