WP6      !"#$%&'()*+,-./012345 NoneN Test script6Fatal exit from the programrImports a set of plugin modules with the same "interface" value, and returns values exported as their interfaces.Arguments: * argument name exported from each module as an interface, * list of plugin modules (given as either module paths or file paths).NResult: * Result is a list of exported objects in the order of module names.66NoneKL*Data type (a :|: b) that behaves all like Either<, except that has no tag in JSON representation as used by FromJSON and ToJSON. Convert to Either datatype. Convert from Either datatype.UDeconstruct the type with two functions corresponding to constructors. This is like either.7878Safe9Generic function for opening file if the filename is not empty nor "-", or using given handle otherwise (probably stdout, stderr, or stdin). TODO: Should it become utility function?:BGeneric function for choosing either file with given name or stdinstdout as inputgoutput. It accepts the function that takes the corresponding handle. Stdin/stdout is selected by "-".;!Check assertion within any monad.9:;<9:;9:;< None *0N=>?@ABC=>?@ABCNone +0357 DType alias for HashMap2Make operation on a map to an operation on a Dict.Take all keys from dictionary. Empty type&Lookup the Type within the dictionary. Size of the  term.$Is the top-level constructor a TObj?#Is it a simple (non-compound) Type?E&Is the top-level constructor a TUnion?&Is the top-level constructor a TArray? DEFGHIJ   DEFGHIJNone Compute total number of nodes (and leaves) within the value tree. Each simple JavaScript type (including String) is counted as of size 1, whereas both Array or object types are counted as 1+sum of the sizes of their member values. &Compute total size of the type of the Value. For: * simple types it is always 1, * for arrays it is just 1+_maximum_ size of the (single) element type, * for objects it is _sum_ of the sizes of fields (since each field type is assumed to be different.)!Compute total depth of the value. For: * simple types it is 1 * for either Array or Object, it is 1 + maximum of depths of their members"Extract Type from the JSON Value2. Unifying types of array elements, if necessary.#+Type check the value with the derived type.$"Standard unification procedure on Types, with inclusion of Type unions.K;Unify sets of types (sets are union types of alternatives).L"Smart constructor for union types.MSimplify TUnion's so there is no TUnion directly inside TUnion. If there is only one element of the set, then return this single element as a type.  !"#N$KLM  !"#$ ! "$#  !"#N$KLMNone 04NOExplanatory type alias for making declarations First element of the triple is original JSON identifier, second element of the triple is the mapped identifier name in Haskell. third element of the triple shows the type in a formatted wayPWrap a type alias.QWrap a data type declarationRMake ToJSON declaration, given identifier (object name in Haskell) and mapping of its keys from JSON to Haskell identifiers *in the same order* as in *data type declaration*.SMake ToJSON declaration, given identifier (object name in Haskell) and mapping of its keys from JSON to Haskell identifiers in the same order as in declarationT Makes a generic identifier name.UKWhether the type is nullable or in other words - represented by Maybe type.V!Add new type alias for Array typeWConvert a JSON key name given by second argument, from within a dictionary keyed with first argument, into a name of Haskell record field (hopefully distinct from other such selectors.)%gSplits initial type with a given label, into a mapping of object type names and object type structures.XOTopological sorting of splitted types so that it is accepted declaration order.Y4Computes all type labels referenced by a given type.'JFor a given splitted types, it returns candidates for extra unifications.((Unifies candidates on a give input list.Z"Remaps type labels according to a [.,\]^_`abcO[defghPQRSTiUjVWklmnopqr%s&tuvXY'(Z%&'(&%'()\]^_`abcO[defghPQRSTiUjVWklmnopqr%s&tuvXY'(ZNone)Default output filname is used, when there is no explicit output file path, or it is "-" (stdout). Default module name is consistent with it.*7Write a Haskell module to an output file, or stdout if w filename is given.)xyz*)**))xyz*None+Description of a subtype.2Code that is different for different type families0,Show type reference with a given name prefix1Show type declaration2Operations that  SubtypPlugin must implement.59Check whether a set of values belongs to this type family{'Hmm... this should be existential type? +,-./012345{ +,-./012345 2345+,-./01+,-./012345{|     !"#$%&'()*+,-./01234456789::;<=>?@ABC D E F G H I JKLMNOPQRSTUVWXYZ[\]^_`aKbbcdefghijklmnopqrstuvwxyz{|}~zjsona_JpSUSHQ72Zp29bfoKGcakL!Data.Aeson.AutoType.Plugin.LoaderData.Aeson.AutoType.AlternativeData.Aeson.AutoType.TypeData.Aeson.AutoType.ExtractData.Aeson.AutoType.FormatData.Aeson.AutoType.CodeGen"Data.Aeson.AutoType.Plugin.SubtypeData.Aeson.AutoType.UtilData.Aeson.AutoType.Prettymain importPlugins:|:AltLeftAltRighttoEither fromEitheraltTypeTNullTBoolTNumTStringTUnionTLabelTObjTArrayDictunDictwithDictkeys emptyTypegettypeSize typeAsSetisObjectisSimpleisArray hasNonTopTObjhasTObj valueSize valueTypeSize valueDepth extractType typeCheck unifyTypessplitTypeByLabeldisplaySplitTypesunificationCandidatesunifyCandidatesdefaultOutputFilenamewriteHaskellModule SubtypeDesc subtypeName subtypeClass referencedeclaretypeInfo SubtypePlugindetectunifyfatal $fFromJSON:|: $fToJSON:|:withFileOrHandlewithFileOrDefaultHandleassertM $fHashableSet formatPair $fOutText $fOutHashMap$fOutSet $fOutValue $fOutVector$fOutScientificMapisUnion$fUniplateType $fOutType $fOrdDict $fShowDict $fOutDict unifyUnionunion simplifyUnionallKeys MappedKey wrapAliaswrapDecl makeFromJSON makeToJSONgenericIdentifier isNullablenewAliasnormalizeFieldNametoposort allLabels remapLabels DeclState_decls_countertracefst3 TypeTreeMTypeTreeDeclMcounterdeclsstepMtShownewDecladdDeclkeywordsescapeKeywords emptySetLikes formatType emptyTypeReprrunDecladdTypesplitTypeByLabel'formatObjectTypenormalizeTypeName capitalize uncapitalizebaseGHC.Num-headerepilogueTypeDesc