U NAF      !"#$%&'()*+,-./0123456789:;<=>?@ABCDE None!"+2346EHMuWhen a VertexHint value is associated with a Type it describes alterations in the type graph from the usual default.'add an extra out edge to the given type7replace all out edges with an edge to an alternate type,out degree zero - don't create any out edges,don't create this vertex, no in or out edges normal case FGHI  FGHINone23468M @A concrete type for which Expanded instances are declared below. {This class lets us use the same expand* functions to work with specially marked expanded types or with the original types.*Apply the th-desugar expand function to a J and mark it as expanded.*Apply the th-desugar expand function to a K7 and mark it as expanded. Note that the definition of K& changed in template-haskell-2.10.0.0.Expand a list of J and build an expanded L K. !Unsafely mark a value as expanded  Strip mark off an expanded valueMNO     MNO None6PQPQNone+24HM$fType' with leading foralls strippedGiven the list of constructors from a Dec, dispatch on the different levels of complexity of the type they represent - a wrapper is a single arity one constructor, an enum is several arity zero constructors, and so on.{Compute the arity of a type - the number of type parameters that must be applied to it in order to obtain a concrete type.Pretty print a Rk value on a single line with each block of white space (newlines, tabs, etc.) converted to a single space.STUVWXYZSTUVWXYZNone 24=KM!Build a graph from the result of typeGraphEdges, each edge goes from a type to one of the types it contains. Thus, each edge represents a primitive lens, and each path in the graph is a composition of lenses."Isolate and remove some nodes#Monadic predicate version of ".$.Remove all the in- and out-edges of some nodes%Monadic predicate version of $.&ORemove some nodes and extend each of their in-edges to each of their out-edges'Monadic predicate version of &. !"#$%&'[ !"#$%&' !"#$%&' !"#$%&'[None!"+2346EHM (OInformation collected about the graph implied by the structure of one or more J values.\AAll the types encountered, including embedded types such as the ] and the ^ in  Maybe Int._(The Info record of all known named types`-Map of the expansion of all encountered typesa@The types with all type synonyms replaced with their expansions.b"Map from field type to field namescHints that modify the shape of the type graph. The key is the raw type and field values that are later used to construct the TypeGraphVertex, it is unsafe to do that until TypeGraphInfo is finalized.dPCollect the graph information for one type and all the types reachable from it.eMAdd a hint to the TypeGraphInfo state and process any type it might contain./EBuild a TypeGraphInfo value by scanning the supplied types and hints.(f\_`abcgh)*+,-.de/i()*+,-./(./)*+,- (f\_`abcgh)*+,-.de/iNone0BFor simple type graphs always set _field and _synonyms to Nothing.2)The record filed which contains this type3.All the type synonyms that expand to this type4The fully expanded type8Return the set of jy of a type's synonyms, plus the name (if any) used in its data declaration. Note that this might return the empty set.01234k56789:;<l 0123456789:;< 0123467589:;< 01234k56789:;<lNone!"+2346EHM>Build the vertices that involve a particular type - if the field is specified it return s singleton, otherwise it returns a set containing a vertex one for the type on its own, and one for each field containing that type.?Build a vertex from the given J and optional .@Build a non-field vertexA&Build a vertex associated with a fieldBwStart with the type graph on the known types, and build a new graph which incorporates the information from the hints.m@build the function argument of Map.alter for the GraphEdges map.nGiven the discovered set of types and maps of type synonyms and fields, build and return the GraphEdges relation on TypeGraphVertex. This is not a recursive function, it stops when it reaches the field types.CSimplify a graph by throwing away the field information in each node. This means the nodes only contain the fully expanded Type value (and any type synonyms.) o=>?@ABmnCD=>?@ABCD>=?@ABCD o=>?@ABmnCDNone234MpLThis is based on the freeNamesOfTypes function from the th-desugar package.q1Update the free variable set for a type parameterr Extract a j from a stuvwxpyz{E|}~qrEEtuvwxpyz{E|}~qr None-  !"#$%&'()*+,-./05678=?BCD    !"#$%&'()*+,-./01234567899:;<=>?@ABCDEFGBCHIJKLMNOPQRPQSPQTUVW X YPZ[\]^_`abcdefghijklmnopqr1stuPQvwxyz{|}~PQth-typegraph-0.17#Language.Haskell.TH.TypeGraph.Hints$Language.Haskell.TH.TypeGraph.Expand"Language.Haskell.TH.TypeGraph.Core#Language.Haskell.TH.TypeGraph.Graph"Language.Haskell.TH.TypeGraph.Info$Language.Haskell.TH.TypeGraph.Vertex#Language.Haskell.TH.TypeGraph.Monad"Language.Haskell.TH.TypeGraph.Free$Language.Haskell.TH.TypeGraph.UnsafeLanguage.Haskell.TH.TypeGraphHasVertexHintshasVertexHints VertexHintExtraDivertSinkHiddenNormalvertexHintTypesEExpanded markExpanded runExpanded' expandType expandPred expandClassP runExpandedField FieldTypefPos fNameAndTypeunReify unReifyNamefNamefType foldShapeconstructorNameconstructorFields typeAritypprint' GraphEdges graphFromMapcutcutMisolateisolateMdissolve dissolveM TypeGraphInfofieldshintsinfoMapsynonymstypeSetemptyTypeGraphInfo typeGraphInfoTypeGraphVertex_field_syns_etypeetypefieldsyns typeNamesbestType typeVertex fieldVertex oldVertex allVertices fieldVerticesvertextypeGraphEdges simpleEdges simpleVertex freeTypeVars$fHasVertexHintsVertexHint$fPprVertexHint$fLiftVertexHint$fDefaultVertexHinttemplate-haskellLanguage.Haskell.TH.SyntaxTypePredClassP$fPprE$fExpandedPredE$fExpandedTypeE$fExpandedPredPred$fExpandedTypeTypeLanguage.Haskell.TH.PprPpr$fLiftE $fLiftMap $fLiftSet$fPpr(,) $fPpr(,)0$fPprFieldType$fPpr() $fPpr(,,)$fPprMap_typeSetbase Data.MaybeMaybeghc-prim GHC.TypesInt_infoMap _expanded _synonyms_fields_hintscollectTypeInfocollectHintInfo$fPprTypeGraphInfoexpanded$fLiftTypeGraphInfoName$fPprTypeGraphVertex$fLiftTypeGraphVertexalterFn findEdgesnull FreeTypeVarsgo_paramtvbName TyVarBndrSt_result_stackst0ftvresultstackgo_appgo_infogo_dec go_params$fFreeTypeVars(,,)$fFreeTypeVars(,)$fFreeTypeVarsCon$fFreeTypeVarsType$fFreeTypeVars[]