S>55.5.0+dev0-2025-04-28/)Parsetree(constant!A;@@+pconst_desc#@@)Parsetree-constant_desc@@@Ѱ;../../parsing/parsetree.mliZZ@@)ParsetreeB@*pconst_loci@@(Location!t@@@ #[[@@C@@@A@@@@@Y\@@@@@@A@-constant_desc"A;@@.Pconst_integerj&string @@@ &&optionL$char!@@@ '@@@ )@@:_24;_2\@@9D@+Pconst_chark"@@@ *@@Ie Je5@@HE@-Pconst_stringl-#@@@ +(Location$!t@@@ ,5@%@@@ -@@@ /@@lfWYmfW@@kF@,Pconst_floatmP&@@@ 0OM'@@@ 1@@@ 3@@l<>l<d@@G@@@A@@@@@^@@@@A@B@.location_stackB;@@@A$list)(Location(!t@@@ @@@ @@@@s  s 0@@@@H@A@)attributeC;@@)attr_name@@(Asttypes+#loc*@@@ @@@ xbfxb}@@P@,attr_payload@@)Parsetree,'payload@@@ y~y~@@Q@(attr_loc@@(Location-!t@@@ zz@@R@@@A@@@@@wOO{@@@@I@A@)extensionC;@@ZA@(Asttypes/#loc.@@@ @@@ ɠ@)Parsetree0'payload@@@ @@ @@@@ B l l B l @@@@J@B@*attributesC;@@A2)Parsetree1)attribute@@@ @@@ @@@@!H  "H  6@@@@ K@B@'payloadC;@@$PStrՐ)Parsetree3)structure@@@ @@9K F H:K F [@@8S@$PSig֐)Parsetree4)signature@@@ @@KL \ ^LL \ q@@JT@$PTypא)Parsetree5)core_type@@@ @@]M  ^M  @@\U@$PPatؐ)Parsetree6'pattern@@@ ҠC)Parsetree7*expression@@@ @@@ @@}N  ~N  @@|V@@@A@@@@@J 8 8@@@@L@B@)core_typeC;@@)ptyp_desc@@)Parsetree8.core_type_desc@@@ ְV  V  @@W@(ptyp_loc@@(Location9!t@@@ ٰW  W  @@X@.ptyp_loc_stack@@)Parsetree:.location_stack@@@ ܰX  X  @@Y@/ptyp_attributes@@)Parsetree;*attributes@@@ ߰Y  Y  4@@Z@@@A@@@@@T  Z S X@@@@M@B@.core_type_descC;@@(Ptyp_anyݐ@@] o q] o {@@[@(Ptyp_varސ<@@@ @@^  ^  @@\@*Ptyp_arrowߐ(Asttypes=)arg_label@@@ )Parsetree>)core_type@@@ )Parsetree?)core_type@@@ @@ _   _  @@ ]@*Ptyp_tupleB@@@@@ @@@ 蠠@)ParsetreeA)core_type@@@ @@ @@@ @@4h5h@@3^@+Ptyp_constrᐠ(AsttypesD#loc)LongidentC!t@@@ (@@@ *F)ParsetreeE)core_type@@@ +@@@ -@@^sKM_sK~@@]_@+Ptyp_object萠H)ParsetreeG,object_field@@@ .@@@ 0(AsttypesI+closed_flag@@@ 1@@yacya@@~`@*Ptyp_class鐠(AsttypesK#loc)LongidentJ!t@@@ 2@@@ 4M)ParsetreeL)core_type@@@ 5@@@ 7@@'@@a@*Ptyp_aliasꐠ)ParsetreeN)core_type@@@ 8(AsttypesP#locO@@@ 9@@@ ;@@  5@@b@,Ptyp_variant될@R)ParsetreeQ)row_field@@@ <@@@ >(AsttypesS+closed_flag@@@ ?\U(AsttypesT%label@@@ @@@@ B@@@ D@@IKI@@c@)Ptyp_poly쐠uX(AsttypesW#locV@@@ E@@@ G@@@ I)ParsetreeY)core_type@@@ J@@&RT'R~@@%d@,Ptyp_package퐠)ParsetreeZ,package_type@@@ K@@8!#9!A@@7e@)Ptyp_open(Asttypes\#loc)Longident[!t@@@ L@@@ N)Parsetree])core_type@@@ O@@\XZ]X@@[f@.Ptyp_extension)Parsetree^)extension@@@ P@@no@@mg@@@A@@@@@r\ Z Z@@@@pN@B@,package_typeC;@@(ppt_path@@(Asttypes`#loc)Longident_!t@@@ Q@@@ S@@h@)ppt_cstrs@@d@(Asttypesb#loc)Longidenta!t@@@ V@@@ X@)Parsetreec)core_type@@@ Y@@ Z@@@ \2@@i@'ppt_loc@@(Locatione!t@@@ _383L@@j@)ppt_attrs@@)Parsetreef*attributes@@@ bMRMh@@k@@@A@@@@@in@@@@O@B@)row_fieldC;@@(prf_desc@@)Parsetreeg.row_field_desc@@@ h@@l@'prf_loc@@(Locationh!t@@@ k@@m@.prf_attributes@@)Parsetreei*attributes@@@ n@@n@@@A@@@@@nn@@@@P@B@.row_field_descC;@@$Rtag(Asttypesk#loc(Asttypesj%label@@@ q@@@ s$booll@@@ tn)Parsetreem)core_type@@@ u@@@ w@@RS@@Qo@(Rinherit)Parsetreeo)core_type@@@ x@@d W Ye W p@@cp@@@A@@@@@h@@@@fQ@B@,object_fieldC;@@(pof_desc@@)Parsetreep1object_field_desc@@@ y}  ~  @@|q@'pof_loc@@(Locationq!t@@@ |    @@r@.pof_attributes@@)Parsetreer*attributes@@@     @@s@@@A@@@@@    @@@@R@B@1object_field_descC;@@$Otag(Asttypest#loc(Asttypess%label@@@ @@@ )Parsetreeu)core_type@@@ @@! ! ! !,@@t@(Oinherit)Parsetreev)core_type@@@ @@!-!/!-!F@@u@@@A@@@@@  @@@@S@B@'patternC;@@)ppat_desc@@)Parsetreew,pattern_desc@@@ !q!v!q!@@v@(ppat_loc@@(Locationx!t@@@ !!!!@@w@.ppat_loc_stack@@)Parsetreey.location_stack@@@ !!!!@@x@/ppat_attributes@@)Parsetreez*attributes@@@ &!!'!!@@%y@@@A@@@@@*!]!]+""@@@@)T@B@,pattern_descC;@@(Ppat_any@@9")"+:")"5@@8z@(Ppat_var(Asttypes|#loc%{@@@ @@@ @@Q"O"QR"O"i@@P{@*Ppat_alias)Parsetree}'pattern@@@ (Asttypes#locF~@@@ @@@ @@r""s""@@q|@-Ppat_constant)Parsetree(constant@@@ @@"""#@@}@-Ppat_interval)Parsetree(constant@@@ )Parsetree(constant@@@ @@#R#T#R#z@@~@*Ppat_tuple@@@@ @@@ @)Parsetree'pattern@@@ @@ @@@ (Asttypes+closed_flag@@@ @@$$$$Z@@@.Ppat_construct(Asttypes#loc)Longident!t@@@ @@@ @`(Asttypes#loc@@@ @@@ @@@ @)Parsetree'pattern@@@ @@ @@@ @@&m&o&m&@@@,Ppat_variant (Asttypes%label@@@ )Parsetree'pattern@@@ @@@ @@3(+(-4(+(U@@2@+Ppat_record @(Asttypes#loc)Longident!t@@@ @@@ @)Parsetree'pattern@@@ @@ @@@ (Asttypes+closed_flag@@@ @@k((l()(@@j@*Ppat_array )Parsetree'pattern@@@ @@@ @@*w*y*w*@@@'Ppat_or )Parsetree'pattern@@@ )Parsetree'pattern@@@ @@****@@@/Ppat_constraint )Parsetree'pattern@@@  )Parsetree)core_type@@@ @@ ** *+@@@)Ppat_type(Asttypes#loc)Longident!t@@@ @@@ @@!+:+<!+:+Z@@@)Ppat_lazy)Parsetree'pattern@@@ @@"+u+w"+u+@@@+Ppat_unpack(Asttypes#locˠ@@@ @@@ @@@ @@#++#++@@@.Ppat_exception)Parsetree'pattern@@@ @@+,,+,,@@@+Ppat_effect)Parsetree'pattern@@@ Π)Parsetree'pattern@@@ @@0,--1,--8@@/@.Ppat_extension)Parsetree)extension@@@ @@B--T-VC--T-s@@A@)Ppat_open(Asttypes#loc)Longident!t@@@ @@@ Ӡ)Parsetree'pattern@@@ @@f.--g.--@@e@@@A@@@@@j""@@@@hU@B@*expressionC;@@)pexp_desc@@)Parsetree/expression_desc@@@ հ4.. 4..%@@~@(pexp_loc@@(Location!t@@@ ذ5.&.+5.&.@@@@.pexp_loc_stack@@)Parsetree.location_stack@@@ ۰6.A.F6.A.e@@@/pexp_attributes@@)Parsetree*attributes@@@ ް7.f.k7.f.@@@@@A@@@@@2--8..@@@@V@B@/expression_descC;@@*Pexp_ident(Asttypes#loc)Longident!t@@@ @@@ @@;..;..@@@-Pexp_constant)Parsetree(constant@@@ @@>//>//:@@@(Pexp_let(Asttypes(rec_flag@@@ e)Parsetree-value_binding@@@ @@@ )Parsetree*expression@@@ @@A//A//@@@-Pexp_function)Parsetree.function_param@@@ @@@ )Parsetree/type_constraint@@@ @@@ )Parsetree-function_body@@@ @@?H1517@I1J1@@>@*Pexp_apply)Parsetree*expression@@@ @(Asttypes)arg_label@@@ @)Parsetree*expression@@@ @@ @@@ @@nX44oX44Y@@m@*Pexp_match)Parsetree*expression@@@ )Parsetree$case@@@ @@@ @@c55c56@@@(Pexp_try)Parsetree*expression@@@ )Parsetree$case@@@ @@@ @@e6T6Ve6T6z@@@*Pexp_tuple &@@@@ @@@ @)Parsetree*expression@@@ @@ @@@ @@g66g66@@@.Pexp_construct!(Asttypes#loc)Longident!t@@@ @@@ Ǡ)Parsetree*expression@@@ @@@ @@ r8L8N r8L8@@ @,Pexp_variant"(Asttypes%label@@@ )Parsetree*expression@@@ @@@ @@ !x9x9z "x9x9@@ @+Pexp_record#ʠ@(Asttypes#loc)Longident!t@@@ @@@ @)Parsetree*expression@@@ @@ @@@  $)Parsetree*expression@@@ @@@ @@ ^}:5:7 _}:5:@@ ]@*Pexp_field$)Parsetree*expression@@@ (Asttypes#loc)Longident!t@@@ @@@ @@ ;z;| ;z;@@ @-Pexp_setfield%)Parsetree*expression@@@ (Asttypes#loc)Longident!t@@@ @@@ !)Parsetree*expression@@@ "@@ ;; ;;@@ @*Pexp_array& %Ԡ)Parsetree*expression@@@ #@@@ %@@ << <<1@@ @/Pexp_ifthenelse')Parsetree*expression@@@ &)Parsetree*expression@@@ ' )Parsetree*expression@@@ (@@@ *@@  ]=<=@@ [@/Pexp_constraint+)Parsetree*expression@@@ 4)Parsetree)core_type@@@ 5@@ w>> x>>@@ v@+Pexp_coerce,)Parsetree*expression@@@ 6 ])Parsetree)core_type@@@ 7@@@ 9)Parsetree)core_type@@@ :@@ ? ? ? ?I@@ @)Pexp_send-)Parsetree*expression@@@ ;(Asttypes#loc(Asttypes%label@@@ <@@@ >@@ ?? ?@@@ @(Pexp_new.(Asttypes#loc)Longident!t@@@ ?@@@ A@@ @*@, @*@I@@ @/Pexp_setinstvar/(Asttypes#loc(Asttypes%label@@@ B@@@ D)Parsetree*expression@@@ E@@ @\@^ @\@@@ @-Pexp_override0 y@(Asttypes#loc(Asttypes%label@@@ F@@@ H@)Parsetree*expression@@@ I@@ J@@@ L@@ 2@@ 3@@@@ 1@0Pexp_struct_item1)Parsetree.structure_item@@@ M)Parsetree*expression@@@ N@@ M@@ N@A,@@ L@+Pexp_assert2)Parsetree*expression@@@ O@@ _AHAJ `AHAe@@ ^@)Pexp_lazy3)Parsetree*expression@@@ P@@ qAA rAA@@ p@)Pexp_poly4)Parsetree*expression@@@ Q W)Parsetree)core_type@@@ R@@@ T@@ B B  B B7@@ @+Pexp_object5)Parsetree/class_structure@@@ U@@ BB BC@@ @,Pexp_newtype6(Asttypes#loc @@@ V@@@ X)Parsetree*expression@@@ Y@@ C/C1 C/CZ@@ @)Pexp_pack7)Parsetree+module_expr@@@ Z )Parsetree,package_type@@@ [@@@ ]@@ CwCy CwC@@ @*Pexp_letop8)Parsetree%letop@@@ ^@@ CC CC@@ @.Pexp_extension9)Parsetree)extension@@@ _@@ DHDJ DHDg@@ @0Pexp_unreachable:@@ DxDz DxD@@ @@@A@@@@@ :..@@@@ W@B@$caseC;@@&pc_lhs;@@)Parsetree'pattern@@@ ` *DD +DD@@ )@(pc_guard<@@ )Parsetree*expression@@@ c@@@ e ?DD @DD@@ >@&pc_rhs=@@)Parsetree*expression@@@ h ODD PDD@@ N@@@A@@@@@ SDD TDE@@@@ RX@B@%letopC;@@$let_>@@)Parsetree*binding_op@@@ k iE\E` jE\Er@@ h@$ands?@@ )Parsetree*binding_op@@@ n@@@ p EsEw EsE@@ ~@$body@@@)Parsetree*expression@@@ s EE EE@@ @@@A@@@@@ ELEL EE@@@@ Y@B@*binding_opC;@@'pbop_opA@@(Asttypes#loc @@@ v@@@ x EE EE@@ @(pbop_patB@@)Parsetree 'pattern@@@ { EE EE@@ @(pbop_expC@@)Parsetree *expression@@@ ~ EE EF @@ @(pbop_locD@@(Location !t@@@  F F F F'@@ @@@A@@@@@ EE F(F+@@@@ Z@B@3function_param_descC;@@*Pparam_valE(Asttypes )arg_label@@@  Ϡ)Parsetree *expression@@@ @@@ )Parsetree'pattern@@@ @@ FGFI FGF@@ @.Pparam_newtypeF(Asttypes#loc @@@ @@@ @@ *HH +HI@@ )@@@A@@@@@ .F-F-@@@@ ,[@B@.function_paramC;@@*pparam_locG@@(Location!t@@@  CLrLv DLrL@@ B@+pparam_descH@@)Parsetree3function_param_desc@@@  SLL TLL@@ R@@@A@@@@@ WL]L] XLL@@@@ V\@B@-function_bodyC;@@.Pfunction_bodyI)Parsetree*expression@@@ @@ oLL pLL@@ n@/Pfunction_casesJ )Parsetree$case@@@ @@@ (Location!t@@@ )Parsetree*attributes@@@ @@ LL LM*@@ @@@A@@@@@ LL@@@@ ]@B@/type_constraintC;@@+PconstraintK)Parsetree)core_type@@@ @@ NN NN@@ @'PcoerceL )Parsetree)core_type@@@ @@@ )Parsetree)core_type@@@ @@ NN NN@@ @@@A@@@@@ NN@@@@ ^@B@1value_descriptionC;@@)pval_nameM@@(Asttypes#loc @@@ @@@   OpOu  OpO@@ @)pval_typeN@@)Parsetree)core_type@@@ OOOO@@@)pval_primO@@ w @@@ @@@ OOOO@@@/pval_attributesP@@)Parsetree *attributes@@@ &OO'OO@@%@(pval_locQ@@(Location!!t@@@ 6PP 7PP"@@5@@@A@@@@@: OROR;P#P(@@@@9_@B@0type_declarationC;@@*ptype_nameR@@(Asttypes##loc*"@@@ @@@ VQjQoWQjQ@@U@,ptype_paramsS@@ '@)Parsetree$)core_type@@@ @@(Asttypes%(variance@@@ @(Asttypes&+injectivity@@@ @@ @@ @@@ ðQQQQ@@@+ptype_cstrsT@@ +@)Parsetree()core_type@@@ Ơ@)Parsetree))core_type@@@ Ǡ@(Location*!t@@@ @@ @@@ ˰!QQ!QR!@@@*ptype_kindU@@)Parsetree,)type_kind@@@ ΰ#R^Rc#R^Ry@@@-ptype_privateV@@(Asttypes-,private_flag@@@ Ѱ$RzR$RzR@@@.ptype_manifestW@@)Parsetree.)core_type@@@ @@@ ְ%RR%RR@@@0ptype_attributesX@@)Parsetree/*attributes@@@ ٰ&RR&RS@@@)ptype_locY@@(Location0!t@@@ ܰ 'S=SB 'S=SX@@ @@@A@@@@@QMQM(SYS^@@@@`@B@)type_kindC;@@.Ptype_abstractZ@@DX X"DX X2@@@-Ptype_variant[2)Parsetree17constructor_declaration@@@ @@@ @@6EX3X57EX3Xd@@5@,Ptype_record\4)Parsetree31label_declaration@@@ @@@ @@NFXeXgOFXeX@@M@*Ptype_open]@@WGXXXGXX@@V@.Ptype_external^;5@@@ @@fHXXgHXX@@e@@@A@@@@@jCXX@@@@ha@B@1label_declarationC;@@(pld_name_@@(Asttypes7#locY6@@@ @@@ LXYLXY@@@+pld_mutable`@@(Asttypes8,mutable_flag@@@ MYYMYY7@@@(pld_typea@@)Parsetree9)core_type@@@ NY8Y=NY8YQ@@@'pld_locb@@(Location:!t@@@ OYRYWOYRYk@@@.pld_attributesc@@)Parsetree;*attributes@@@ PYlYqPYlY@@@@@A@@@@@JXXQYY@@@@b@B@7constructor_declarationC;@@(pcd_named@@(Asttypes=#loc<@@@ @@@ _[[_[[@@@(pcd_varse@@Y@(Asttypes?#loc>@@@ @@@ @@@ `[[`[[@@@(pcd_argsf@@)ParsetreeA5constructor_arguments@@@ a[[a[[@@@'pcd_resg@@)ParsetreeB)core_type@@@ @@@ &b[\'b[\@@%@'pcd_loch@@(LocationC!t@@@ 6c\\ 7c\\4@@5@.pcd_attributesi@@)ParsetreeD*attributes@@@ Fd\5\:Gd\5\U@@E@@@A@@@@@J][v[vKe\y\~@@@@Ic@B@5constructor_argumentsC;@@+Pcstr_tuplejF)ParsetreeE)core_type@@@ @@@ @@hh\\ih\\@@g@,Pcstr_recordkH)ParsetreeG1label_declaration@@@ @@@ @@i\\i\\@@@@@A@@@@@g\\@@@@d@B@.type_extensionC;@@+ptyext_pathl@@(AsttypesJ#loc)LongidentI!t@@@ @@@ "z__z__@@@-ptyext_paramsm@@N@)ParsetreeK)core_type@@@ %@@(AsttypesL(variance@@@ &@(AsttypesM+injectivity@@@ '@@ (@@ )@@@ +{__{_` @@@3ptyext_constructorsn@@HP)ParsetreeO5extension_constructor@@@ .@@@ 0|` `|` `B@@@.ptyext_privateo@@(AsttypesQ,private_flag@@@ 3}`C`H}`C`e@@@*ptyext_locp@@(LocationR!t@@@ 6 ~`f`k ~`f`@@ @1ptyext_attributesq@@)ParsetreeS*attributes@@@ 9````@@@@@A@@@@@x__``@@@@e@B@5extension_constructorC;@@)pext_namer@@(AsttypesU#locT@@@ ?@@@ A:aYa^;aYat@@9@)pext_kinds@@)ParsetreeV:extension_constructor_kind@@@ DJauazKaua@@I@(pext_loct@@(LocationW!t@@@ GZaa[aa@@Y@/pext_attributesu@@)ParsetreeX*attributes@@@ Jjaakaa@@i@@@A@@@@@na7a7obb@@@@mf@B@.type_exceptionC;@@2ptyexn_constructorv@@)ParsetreeY5extension_constructor@@@ Pb b$b bO@@@*ptyexn_locw@@(LocationZ!t@@@ SbPbTbPbl@@@1ptyexn_attributesx@@)Parsetree[*attributes@@@ Vbmbqbmb@@@@@A@@@@@bbbb@@@@g@B@:extension_constructor_kindC;@@)Pext_decly$^(Asttypes]#loc\@@@ Y@@@ [@@@ ])Parsetree_5constructor_arguments@@@ ^)Parsetree`)core_type@@@ _@@@ a@@ccccZ@@@+Pext_rebindz(Asttypesb#loc)Longidenta!t@@@ b@@@ d@@ffff@@@@@A@@@@@bb@@@@h@B@*class_typeC;@@)pcty_desc{@@)Parsetreec/class_type_desc@@@ egggg@@@(pcty_loc|@@(Locationd!t@@@ h'gg(gg@@&@/pcty_attributes}@@)Parsetreee*attributes@@@ k7gg8gg@@6@@@A@@@@@;gmgm<hh@@@@:i@B@/class_type_descC;@@+Pcty_constr~(Asttypesg#loc)Longidentf!t@@@ n@@@ pi)Parsetreeh)core_type@@@ q@@@ s@@khhlhhP@@j@.Pcty_signature)Parsetreej/class_signature@@@ t@@}hh~hh@@|@*Pcty_arrow(Asttypesk)arg_label@@@ u)Parsetreel)core_type@@@ v)Parsetreem*class_type@@@ w@@hhhh@@@.Pcty_extension)Parsetreen)extension@@@ x@@jrjtjrj@@@)Pcty_open)Parsetreeo0open_description@@@ y)Parsetreep*class_type@@@ z@@jjjj@@@@@A@@@@@hh@@@@j@B@/class_signatureC;@@*pcsig_self@@)Parsetreeq)core_type@@@ {kk kk"@@@,pcsig_fields@@[s)Parsetreer0class_type_field@@@ ~@@@ k#k(k#kL@@@@@A@@@@@jjkMkR@@@@k@B@0class_type_fieldC;@@)pctf_desc@@)Parsetreet5class_type_field_desc@@@ lQlVlQlw@@@(pctf_loc@@(Locationu!t@@@ 'lxl}(lxl@@&@/pctf_attributes@@)Parsetreev*attributes@@@ 7ll8ll@@6@@@A@@@@@;l4l4<ll@@@@:l@B@5class_type_field_descC;@@,Pctf_inherit)Parsetreew*class_type@@@ @@SllTlm@@R@(Pctf_val@(Asttypesy#loc(Asttypesx%label@@@ @@@ @(Asttypesz,mutable_flag@@@ @(Asttypes{,virtual_flag@@@ @)Parsetree|)core_type@@@ @@ @@m.m0m.ms@@@+Pctf_method@(Asttypes~#loc(Asttypes}%label@@@ @@@ @(Asttypes,private_flag@@@ @(Asttypes,virtual_flag@@@ @)Parsetree)core_type@@@ @@ @@mmmm@@@/Pctf_constraint@)Parsetree)core_type@@@ @)Parsetree)core_type@@@ @@ @@nBnDnBnp@@@.Pctf_attribute)Parsetree)attribute@@@ @@nnnn@@@.Pctf_extension)Parsetree)extension@@@ @@nnnn@@@@@A@@@@@ll@@@@m@B@+class_infosC;!a@ @A(pci_virt@@(Asttypes,virtual_flag@@@ /oo0oo,@@.@*pci_params@@@)Parsetree)core_type@@@ @@(Asttypes(variance@@@ @(Asttypes+injectivity@@@ @@ @@ @@@ ao-o2bo-oj@@`@(pci_name@@(Asttypes#locK@@@ @@@ wokopxoko@@v@(pci_expr@@cD@ oooo@@ @'pci_loc@@(Location!t@@@ oooo@@ @.pci_attributes@@)Parsetree*attributes@@@ oooo@@ @@@A@Y@@@@@nnoo@@@@n@B@1class_descriptionC;@@A)Parsetree+class_infos)Parsetree*class_type@@@ @@@ @@@@pppp@@@@o@B@6class_type_declarationC;@@9A)Parsetree+class_infos)Parsetree*class_type@@@ @@@ @@@@pppq(@@@@p@B@*class_exprC;@@(pcl_desc@@)Parsetree/class_expr_desc@@@ °qvq{qvq@@ @'pcl_loc@@(Location!t@@@ Űqqqq@@ @.pcl_attributes@@)Parsetree*attributes@@@ Ȱqqqq@@@@@A@@@@@q_q_qq@@@@q@B@/class_expr_descC;@@*Pcl_constr(Asttypes#loc)Longident!t@@@ @@@ ͠)Parsetree)core_type@@@ @@@ @@Gr rHr r>@@F@-Pcl_structure)Parsetree/class_structure@@@ @@Y rhrjZ rhr@@X@'Pcl_fun(Asttypes)arg_label@@@ Ҡ?)Parsetree*expression@@@ @@@ ՠ)Parsetree'pattern@@@ ֠)Parsetree*class_expr@@@ @@ rr rr@@@)Pcl_apply)Parsetree*class_expr@@@ ؠ @(Asttypes)arg_label@@@ ٠@)Parsetree*expression@@@ @@ @@@ @@uuuu@@@'Pcl_let(Asttypes(rec_flag@@@ ޠ9)Parsetree-value_binding@@@ @@@ )Parsetree*class_expr@@@ @@!vv!vw@@@.Pcl_constraint)Parsetree*class_expr@@@ )Parsetree*class_type@@@ @@(xcxe(xcx@@@-Pcl_extension)Parsetree)extension@@@ @@)xx)xx@@@(Pcl_open)Parsetree0open_description@@@ )Parsetree*class_expr@@@ @@,*xx-*xy@@+@@@A@@@@@0qq@@@@.r@B@/class_structureC;@@*pcstr_self@@)Parsetree'pattern@@@ E.y:y?F.y:yS@@D@,pcstr_fields@@)Parsetree+class_field@@@ @@@ [/yTyY\/yTyx@@Z@@@A@@@@@_,yy`0yyy~@@@@^s@B@+class_fieldC;@@(pcf_desc@@)Parsetree0class_field_desc@@@ u9zvz{v9zvz@@t@'pcf_loc@@(Location!t@@@ :zz:zz@@@.pcf_attributes@@)Parsetree*attributes@@@ ;zz;zz@@@@@A@@@@@7z^z^<zz@@@@t@B@0class_field_descC;@@+Pcf_inherit(Asttypes-override_flag@@@ )Parsetree*class_expr@@@ (Asttypes#loc@@@ @@@ @@@ @@?{{?{{S@@@'Pcf_val@(Asttypes#loc(Asttypes%label@@@@@@@(Asttypes,mutable_flag@@@@)Parsetree0class_field_kind@@@@@@@N}}N}~@@@*Pcf_method@(Asttypes#loc(Asttypes%label@@@@@@@(Asttypes,private_flag@@@ @)Parsetree0class_field_kind@@@ @@ @@4]5]R@@3@.Pcf_constraint@)Parsetree)core_type@@@ @)Parsetree)core_type@@@ @@@@Tc8:Uc8e@@S@/Pcf_initializer)Parsetree*expression@@@@@fdgd@@e @-Pcf_attribute)Parsetree)attribute@@@@@xeye@@w!@-Pcf_extension)Parsetree)extension@@@@@ff@@"@@@A@@@@@>zz@@@@u@B@0class_field_kindC;@@+Cfk_virtual)Parsetree)core_type@@@@@i9;i9U@@#@,Cfk_concrete(Asttypes-override_flag@@@)Parsetree*expression@@@@@jVXjV@@$@@@A@@@@@h""@@@@v@B@1class_declarationC;@@:A)Parsetree+class_infos)Parsetree*class_expr@@@@@@@@@@ll@@@@w@B@+module_typeC;@@)pmty_desc@@)Parsetree0module_type_desc@@@s#s?@@%@(pmty_loc@@(Location!t@@@t@Et@Z@@&@/pmty_attributes@@)Parsetree*attributes@@@u[`u[|@@'@@@A@@@@@qv@@@@x@B@0module_type_descC;@@*Pmty_ident(Asttypes#loc)Longident!t@@@!@@@#@@9y:y@@8(@.Pmty_signature)Parsetree)signature@@@$@@KzLz!@@J)@,Pmty_functor)Parsetree1functor_parameter@@@%)Parsetree+module_type@@@&@@f{8:g{8k@@e*@)Pmty_with)Parsetree+module_type@@@'Ҡ)Parsetree/with_constraint@@@(@@@*@@}}@@+@+Pmty_typeof)Parsetree+module_expr@@@+@@~~@@,@.Pmty_extension)Parsetree)extension@@@,@@7@@-@*Pmty_alias(Asttypes#loc)Longident!t@@@-@@@/@@HJHi@@.@@@A@@@@@x@@@@y@B@1functor_parameterC;@@$Unit@@@@/@%Named(Asttypes#loc@@@0@@@2@@@4)Parsetree+module_type@@@5@@@@0@@@A@@@@@@@@@z@B@)signatureC;@@xAw۠)Parsetree.signature_item@@@6@@@8@@@@hhh@@@@{@B@.signature_itemC;@@)psig_desc@@)Parsetree3signature_item_desc@@@9/0@@.1@(psig_loc@@(Location!t@@@<?@@@>2@@@A@@@@@CD@@@@B|@B@3signature_item_descC;@@*Psig_value)Parsetree1value_description@@@?@@[  \ ,@@Z3@)Psig_type(Asttypes(rec_flag@@@@)Parsetree0type_declaration@@@A@@@C@@|~}~@@{4@.Psig_typesubst)Parsetree0type_declaration@@@D@@@F@@@@5@+Psig_typext)Parsetree.type_extension@@@G@@DFDe@@6@.Psig_exception)Parsetree.type_exception@@@H@@@@7@+Psig_module)Parsetree2module_declaration@@@I@@@@8@-Psig_modsubst)Parsetree3module_substitution@@@J@@8@@9@.Psig_recmoduleR)Parsetree2module_declaration@@@K@@@M@@QSQ~@@:@,Psig_modtypeÐ)Parsetree7module_type_declaration@@@N@@@@;@1Psig_modtypesubstĐ)Parsetree7module_type_declaration@@@O@@I@@<@)Psig_openŐ)Parsetree0open_description@@@P@@*pr+p@@)=@,Psig_includeƐ)Parsetree3include_description@@@Q@@<=@@;>@*Psig_classǐ)Parsetree1class_description@@@R@@@T@@TU@@S?@/Psig_class_typeȐ)Parsetree6class_type_declaration@@@U@@@W@@l<>m<n@@k@@.Psig_attributeɐ)Parsetree)attribute@@@X@@~@@}A@.Psig_extensionʐ)Parsetree)extension@@@Y)Parsetree*attributes@@@Z@@ @@B@@@A@@@@@@@@@}@B@2module_declarationC;@@(pmd_name@@(Asttypes#loc@@@[@@@]@@@_<A<]@@C@(pmd_type@@)Parsetree+module_type@@@b^c^y@@D@.pmd_attributes@@)Parsetree*attributes@@@ezz@@E@'pmd_loc@@(Location!t@@@h@@F@@@A@@@@@@@@@~@B@3module_substitutionC;@@(pms_name@@(Asttypes#loc@@@n@@@p =B=W@@ G@,pms_manifest@@(Asttypes#loc)Longident!t@@@s@@@u&X]'X{@@%H@.pms_attributes@@)Parsetree*attributes@@@x6|7|@@5I@'pms_loc@@(Location!t@@@{FG@@EJ@@@A@@@@@JK@@@@I@B@7module_type_declarationC;@@)pmtd_name@@(Asttypes#loc:@@@@@@fDIgD_@@eK@)pmtd_type@@A)Parsetree+module_type@@@@@@{`e|`@@zL@/pmtd_attributes@@)Parsetree*attributes@@@@@M@(pmtd_loc@@(Location!t@@@@@N@@@A@@@@@  @@@@@@B@*open_infosC;!a@@A*popen_expr@@ D@@@O@.popen_override@@(Asttypes-override_flag@@@@@P@)popen_loc@@(Location!t@@@@@Q@0popen_attributes@@)Parsetree*attributes@@@<@@R@@@A@Y@@@@@=B@@@@A@B@0open_descriptionC;@@aA)Parsetree *open_infos(Asttypes #loc)Longident!t@@@@@@@@@@@@@@@@@ B@B@0open_declarationC;@@A)Parsetree *open_infos)Parsetree +module_expr@@@@@@@@@@)DD*Dq@@@@(C@B@-include_infosC;!a@@A)pincl_mod@@ D@> ?@@=S@)pincl_loc@@(Location !t@@@NO5@@MT@0pincl_attributes@@)Parsetree*attributes@@@^6;_6X@@]U@@@A@Y@@@@@deY^@@@@cD@B@3include_descriptionC;@@A)Parsetree-include_infos)Parsetree+module_type@@@@@@@@@@```@@@@~E@B@3include_declarationC;@@A)Parsetree-include_infos)Parsetree+module_expr@@@@@@@@@@ @@@@F@B@/with_constraintC;@@*Pwith_typeސ(Asttypes#loc)Longident!t@@@@@@)Parsetree0type_declaration@@@@@hjh@@V@,Pwith_moduleߐ(Asttypes#loc)Longident!t@@@@@@(Asttypes#loc)Longident!t@@@@@@@@020e@@W@-Pwith_modtype(Asttypes#loc)Longident!t@@@@@@Ǡ)Parsetree+module_type@@@@@@@X@2Pwith_modtypesubstᐠ(Asttypes#loc)Longident!t@@@@@@ˠ)Parsetree+module_type@@@@@9:@@8Y@/Pwith_typesubst␠(Asttypes!#loc)Longident !t@@@@@@Ϡ)Parsetree"0type_declaration@@@@@]KM^K@@\Z@.Pwith_modsubst㐠(Asttypes$#loc)Longident#!t@@@@@@Ӡ(Asttypes&#loc)Longident%!t@@@@@@@@@@[@@@A@@@@@RR@@@@G@B@+module_exprC;@@)pmod_desc@@)Parsetree'0module_expr_desc@@@װqvq@@\@(pmod_loc@@(Location(!t@@@ڰ  @@]@/pmod_attributes@@)Parsetree)*attributes@@@ݰ  @@^@@@A@@@@@YY @@@@H@B@0module_expr_descC;@@*Pmod_ident琠(Asttypes+#loc)Longident*!t@@@@@@@@  -@@_@.Pmod_structure萠)Parsetree,)structure@@@@@:<:Y@@`@,Pmod_functor鐠)Parsetree-1functor_parameter@@@)Parsetree.+module_expr@@@@@sus@@a@*Pmod_applyꐠ)Parsetree/+module_expr@@@)Parsetree0+module_expr@@@@@01@@/b@/Pmod_apply_unit될)Parsetree1+module_expr@@@@@B  C -@@Ac@/Pmod_constraint쐠)Parsetree2+module_expr@@@)Parsetree3+module_type@@@@@]=?^=m@@\d@+Pmod_unpack퐠)Parsetree4*expression@@@@@op@@ne@.Pmod_extension)Parsetree5)extension@@@@@@@f@@@A@@@@@ @@@@I@B@)structureC;@@A7)Parsetree6.structure_item@@@@@@@@@@@@@@J@B@.structure_itemC;@@)pstr_desc@@)Parsetree83structure_item_desc@@@#(#G@@g@(pstr_loc@@(Location9!t@@@HMHb@@h@@@A@@@@@ch@@@@K@B@3structure_item_descC;@@)Pstr_eval)Parsetree:*expression@@@)Parsetree;*attributes@@@@@!!@@i@*Pstr_value(Asttypes<(rec_flag@@@f>)Parsetree=-value_binding@@@@@@@@" "@@j@.Pstr_primitive)Parsetree?1value_description@@@@@):<):a@@k@)Pstr_type(Asttypes@(rec_flag@@@B)ParsetreeA0type_declaration@@@@@@@@;,<,@@:l@+Pstr_typext)ParsetreeC.type_extension@@@@@M.N./@@Lm@.Pstr_exception)ParsetreeD.type_exception@@@@@_/IK`/Im@@^n@+Pstr_module)ParsetreeE.module_binding@@@@@q2r2@@po@.Pstr_recmoduleG)ParsetreeF.module_binding@@@@@@@@33@@p@,Pstr_modtype)ParsetreeH7module_type_declaration@@@@@5NP5Ny@@q@)Pstr_open)ParsetreeI0open_declaration@@@@@66@@r@*Pstr_class#K)ParsetreeJ1class_declaration@@@ @@@ @@77@@s@/Pstr_class_type;M)ParsetreeL6class_type_declaration@@@ @@@@@9&(9&X@@t@,Pstr_include)ParsetreeN3include_declaration@@@@@;;@@u@.Pstr_attribute)ParsetreeO)attribute@@@@@ < <@@ v@.Pstr_extension)ParsetreeP)extension@@@)ParsetreeQ*attributes@@@@@ = =1@@ w@@@A@@@@@  jj@@@@ L@B@0value_constraintC;@@.Pvc_constraint8locally_abstract_univars@@T(AsttypesS#loc R@@@@@@@@@ FAsy GAs@@ Ex@#typ@@)ParsetreeU)core_type@@@ VB WB@@ Uy@@@ Z@[] [C@@ Yz@,Pvc_coercion&ground@@ :)ParsetreeV)core_type@@@@@@ tD uD@@ s{@(coercion@@)ParsetreeW)core_type@@@" D D@@ |@@@ D D@@ }@@@A@@@@@ ?DD@@@@ M@B@-value_bindingC;@@'pvb_pat@@)ParsetreeX'pattern@@@% Q  Q@@ ~@(pvb_expr@@)ParsetreeY*expression@@@( R  R5@@ @.pvb_constraint@@ )ParsetreeZ0value_constraint@@@+@@@- S6: S6b@@ @.pvb_attributes @@)Parsetree[*attributes@@@0 Tcg Tc@@ @'pvb_loc @@(Location\!t@@@3 U U@@ @@@A@@@@@ O V@@@@ N@B@.module_bindingC;@@(pmb_name @@(Asttypes^#loc Ӡ ]@@@6@@@8@@@:! Z! Z@@! @(pmb_expr @@)Parsetree_+module_expr@@@=![ ![!@@!@.pmb_attributes @@)Parsetree`*attributes@@@@!+\"'!,\"B@@!*@'pmb_loc@@(Locationa!t@@@C!;]CH!<]C\@@!:@@@A@@@@@!?X!@^]b@@@@!>O@B@/toplevel_phraseD;@@(Ptop_def)Parsetreeb)structure@@@@@!Wf!Xf@@!V@(Ptop_dir)Parsetreec2toplevel_directive@@@@@!ig  !jg +@@!h@@@A@@@@@!me@@@@!k@A@2toplevel_directiveD;@@)pdir_name@@(Asttypese#loc!\d@@@@@@ڰ!kfj!kf@@!@(pdir_arg@@!c)Parsetreef2directive_argument@@@@@@߰!l!l@@!@(pdir_loc@@(Locationg!t@@@!m!m@@!@@@A@@@@@!iII!n@@@@!@B@2directive_argumentD;@@*pdira_desc@@)Parsetreeh7directive_argument_desc@@@!r!r@@!@)pdira_loc@@(Locationi!t@@@!s!s)@@!@@@A@@@@@!p!t*-@@@@!@B@7directive_argument_descD;@@+Pdir_string!j@@@@@!wMO!wMf@@!@(Pdir_int!k@@@!Ӡ!l@@@@@@@@" xgi" xg@@" @*Pdir_ident)Longidentm!t@@@@@"y"y@@"@)Pdir_booln@@@@@"+z",z@@"*@@@A@@@@@"/v//@@@@"-@B@@3 (Abstract syntax tree produced by parsing@# (Warning:@ ' this module is unstable and part of -Compiler_libs@-compiler-libs@!.@@@@@@@@@@@@A"L#2Parsetree.constant@@"_@@"^@"O@@"N@@A@@"D!@@#7Parsetree.constant_desc@@"?">"8@@3:Integer constants such as !3! "3l! "3L! "3n!.@/ Suffixes *[g-z][G-Z] 2 are accepted by the parser. Suffixes except #'l'", #'L'% and #'n' are rejected by the typechecker@@@@@@@@@@@@"`"_@@32Character such as #'c'!.@@@@@@@@@@@@"a"`"["S@@38Constant string such as *"constant". or <{delim|other constant|delim}!.@ J The location span the content of the string, without the delimiters.@@@@@@@@@@@@"Z"Y"T@@37Float constant such as #3.4", #2e5$ or &1.4e-4!.@/ Suffixes #g-z#G-Z K are accepted by the parser. Suffixes are rejected by the typechecker.@@@@@@@@@@@@@A@@@#8Parsetree.location_stack@@@A"i@"\"[@@A@0Extension points@@#3Parsetree.attribute33Attributes such as )[@id ARG]% and *[@@id ARG]!.@ o Metadata containers passed around within the AST. The compiler ignores unknown attributes.@@@@@@@@@@@@@"t@@"s@"`@@"_@"R@@"Q@@A@@"G@@#3Parsetree.extension39Extension points such as 8[%id ARG] and [%%id ARG]!.@ B Sub-language placeholder -- rejected by the typechecker.@@@@@@@@@@@@@@A"T@@#4Parsetree.attributes@@@A"6@!@#1Parsetree.payload@@"$"#@@@""@@3%: SIG & in an attribute or an extension point@@@@@@@@@@@@""@@3#: T & in an attribute or an extension point@@@@@@@@@@@@" " "@@3#? P& or *? P when E ', in an attribute or an extension point@@@@@@@@@@@@@A@@Z@A@-Core language@@B@0Type expressions@@#3Parsetree.core_type@@" @@" @!@@!@!@@!@!@@!31... [@id1] [@id2]@@@@@@@@@@@@@A@@}@#8Parsetree.core_type_desc@@!ב@@3!_@@@@@@@@@@@@!ב!@@38A type variable such as "'a@@@@@@@@@@@@!Ց!Ԡ!̠!@@37Ptyp_arrow(lbl, T1, T2), represents:(T1 -> T2) when #lbl ) is :Asttypes.arg_label.Nolabel@'Nolabel@!,@+~l:T1 -> T2& when #lbl ) is ;Asttypes.arg_label.Labelled@(Labelled@!,@+?l:T1 -> T2& when #lbl ) is ;Asttypes.arg_label.Optional@(Optional@!.@@@@@@@@@@@@@@""@@3.Ptyp_tuple(tl); represents a product type:-T1 * ... * Tn4 when "tl$ is ;(None, T1); ...; (None, Tn)@3L1:T1 * ... * Ln:Tn4 when "tl$ is !(Some L1, T1); ...; (Some Ln, Tn)@-A mix, e.g., *L1:T1 * T24 when "tl$ is 9(Some L1, T1); (None, T2)@@7 Invariant: &n >= 2!.@@@@@@@@@@@@"*")"@@36Ptyp_constr(lident, l), represents:'tconstr4 when $l=[]!,@)T tconstr2 when %l=[T]!,@5(T1, ..., Tn) tconstr& when 1l=[T1 ; ... ; Tn]!.@@@@@@@@@@@@@@"7"6"(@@3 (Ptyp_object([ l1:T1; ...; ln:Tn ], flag), represents:5< l1:T1; ...; ln:Tn >* when $flag + is ;Asttypes.closed_flag.Closed@&Closed@!,@9< l1:T1; ...; ln:Tn; .. >& when $flag / is 9Asttypes.closed_flag.Open@$Open@!.@@@@@@@@@@@@@@"T"S"B@@36Ptyp_class(tconstr, l), represents:(#tconstr4 when $l=[]!,@*T #tconstr2 when %l=[T]!,@6(T1, ..., Tn) #tconstr& when 1l=[T1 ; ... ; Tn]!.@@@@@@@@@@@@@@"a"`"X@@3'T as 'a!.@@@@@@@@@@@@"N"M"?"7@@3 #Ptyp_variant([`A;`B], flag, labels), represents:)[ `A|`B ]< when $flag& is ;Asttypes.closed_flag.Closed@&Closed@=, and &labels$ is $None!,@*[> `A|`B ]< when $flag& is 9Asttypes.closed_flag.Open@$Open@=, and &labels$ is $None!,@*[< `A|`B ]< when $flag& is ;Asttypes.closed_flag.Closed@&Closed@=, and &labels$ is 'Some []!,@2[< `A|`B > `X `Y ]< when $flag& is ;Asttypes.closed_flag.Closed@&Closed@=, and &labels$ is .Some ["X";"Y"]!.@@@@@@@@@@@@@@"""@@3.'a1 ... 'an. T@ 5 Can only appear in the following context:@'As the =E@0 of a  &Parsetree.pattern_desc.Ppat_constraintK/Ppat_constraint@ O node corresponding to a constraint on a let-binding: >let x : 'a1 ... 'an. T = e ...@@&Under  &Parsetree.class_field_kind.Cfk_virtualK+Cfk_virtual@ $ for methods (not values).@@'As the hE@1 of a  +Parsetree.class_type_field_desc.Pctf_methodK+Pctf_method@& node.@@'As the E@& of a  #Parsetree.expression_desc.Pexp_polyK)Pexp_poly@1 node.@@'As the  $Parsetree.label_declaration.pld_typeJ(pld_type@7 field of a ;Parsetree.label_declarationE@!.@@%As a E@& of a  $Parsetree.core_type_desc.Ptyp_objectK+Ptyp_object@1 node.@@'As the  %Parsetree.value_description.pval_typeJ)pval_type@7 field of a ;Parsetree.value_descriptionE@!.@@@@@@@@@@@@@@#?#>@@3*(module S)!.@@@@@@@@@@@@#:#9#(@@3%M.(T)@@@@@@@@@@@@#!# @@3%[%id]!.@@@@@@@@@@@@@A@@g@#6Parsetree.package_type3#As  E@. typed values:<{ppt_path: S; ppt_cstrs: []}, represents *(module S)!,@ 5{ppt_path: S; ppt_cstrs: [(t1, T1) ; ... ; (tn, Tn)]}6 represents 0(module S with type t1 = T1 and ... and tn = Tn)!.@@@@@@@@@@@@@@@#B@@#A@#+@@#*@#@@"@"@@"@@A@@@#3Parsetree.row_field@@"@@"@"@@"@"@@"@@A@@@#8Parsetree.row_field_desc@@""""@@3.Rtag(`A, b, l), represents:"`A8 when !b$ is $true& and !l$ is "[]!,@'`A of T3 when !b$ is %false% and !l$ is #[T]!,@2`A of T1 & .. & Tn( when !b$ is %false% and !l$ is *[T1;...Tn]!,@4`A of & T1 & .. & Tn& when !b$ is $true& and !l$ is *[T1;...Tn]!.@@$The $bool N field is true if the tag contains a constant (empty) constructor.@!& ` occurs when several types are used for the same constructor (see 4.2 in the manual)@@@@@@@@@@@@@@###"@@3'[ | t ]@@@@@@@@@@@@@A@@\@#6Parsetree.object_field@@#@@#@# @@# @"@@"@@A@@i@#;Parsetree.object_field_desc@@"쑠""@@@"͑"@@@@A@@y@B@(Patterns@@#1Parsetree.pattern@@"@@"@"@@"@"@@"@"@@"31... [@id1] [@id2]@@@@@@@@@@@@@A@@@#6Parsetree.pattern_desc@@"@@3,The pattern !_!.@@@@@@@@@@@@""@@3;A variable pattern such as !x@@@@@@@@@@@@"""@@39An alias pattern such as 'P as 'a@@@@@@@@@@@@"w"v@@31Patterns such as !1", #'a'", &"true"", #1.0", "1l", "1L", "1n@@@@@@@@@@@@"""@@31Patterns such as ('a'..'z'!.@ m Other forms of interval are recognized by the parser but rejected by the type-checker.@@@@@@@@@@@@"""q@@36Ppat_tuple(pl, Closed)+ represents-(P1, ..., Pn)4 when "pl$ is ;(None, P1); ...; (None, Pn)@5(~L1:P1, ..., ~Ln:Pn)4 when "pl$ is !(Some L1, P1); ...; (Some Ln, Pn)@,A mix, e.g. ,(~L1:P1, P2)4 when "pl$ is 9(Some L1, P1); (None, P2)@@+ 4Ppat_tuple(pl, Open) H is similar, but indicates the pattern additionally ends in a "..!.@5 Invariant:+If Closed, &n >= 2!.@)If Open, &n >= 1!.@@@@@@@@@@@@@@"ˑ"ʠ"@@37Ppat_construct(C, args), represents:!C4 when $args$ is $None!,@#C P2 when $args$ is ,Some ([], P)@/C (P1, ..., Pn)& when $args / is #Some ([], Ppat_tuple [P1; ...; Pn])@.C (type a b) P' when $args$ is 0Some ([a; b], P)@@@@@@@@@@@@@@"ۑ"ڠ"@@35Ppat_variant(`A, pat), represents:"`A( when #pat$ is $None!,@$`A P& when #pat$ is &Some P@@@@@@@@@@@@@@"""@@3 .Ppat_record([(l1, P1) ; ... ; (ln, Pn)], flag), represents:5{ l1=P1; ...; ln=Pn }7 when $flag$ is ;Asttypes.closed_flag.Closed@&Closed@@7{ l1=P1; ...; ln=Pn; _}7 when $flag$ is 9Asttypes.closed_flag.Open@$Open@@@7 Invariant: %n > 0@@@@@@@@@@@@""@@3(Pattern 1[| P1; ...; Pn |]@@@@@@@@@@@@"鑠""@@3(Pattern 'P1 | P2@@@@@@@@@@@@"ܑ"۠"@@3(Pattern '(P : T)@@@@@@@@@@@@"ϑ"@@3(Pattern '#tconst@@@@@@@@@@@@""@@3(Pattern &lazy P@@@@@@@@@@@@""@@3.Ppat_unpack(s), represents:*(module P)& when !s$ is (Some "P"@*(module _)& when !s$ is $None@@2 Note: .(module P : S)> is represented as 6Ppat_constraint(Ppat_unpack(Some "P"), Ptyp_package S)@@@@@@@@@@@@"ڑ"@@3(Pattern +exception P@@@@@@@@@@@@"Ց"Ԡ"@@@""@@3(Pattern %[%id]@@@@@@@@@@@@"""@@3(Pattern %M.(P)@@@@@@@@@@@@@A@@@B@1Value expressions@@#4Parsetree.expression@@"@@"@"@@"@"@@"@"@@"~31... [@id1] [@id2]@@@@@@@@@@@@@A@@@#9Parsetree.expression_desc@@"t"s@@34Identifiers such as !x% and #M.x@@@@@@@@@@@@"l"k@@3=Expressions constant such as !1", #'a'", &"true"", #1.0", "1l., "1L", "1n@@@@@@@@@@@@""""t@@3 ,Pexp_let(flag, [(P1,E1) ; ... ; (Pn,En)], E), represents: $let P1 = E1 and ... and Pn = EN in E5 when $flag$ is >Asttypes.rec_flag.Nonrecursive@,Nonrecursive@!,@ (let rec P1 = E1 and ... and Pn = EN in E5 when $flag$ is ;Asttypes.rec_flag.Recursive@)Recursive@!.@@@@@@@@@@@@@@""""@@3 &Pexp_function ([P1; ...; Pn], C, body) * represents any construct involving #fun$ or (function,, including:2fun P1 ... Pn -> E. when 7body = Pfunction_body E@ 3fun P1 ... Pn -> function p1 -> e1 | ... | pm -> em. when 2body = Pfunction_cases [ p1 -> e1; ...; pm -> em ]@@' !C Z represents a type constraint or coercion placed immediately before the arrow, e.g. 9fun P1 ... Pn : ty -> ...& when 9C = Some (Pconstraint ty)!.@ + A function must have parameters: in ?Pexp_function (params, _, body)+, if ¶ms4 does not contain a ,Pparam_val _", $body/ must be 1Pfunction_cases _!.@@@@@@@@@@@@"ّ"ؠ"@@3 +Pexp_apply(E0, [(l1, E1) ; ... ; (ln, En)])8 represents 4E0 ~l1:E1 ... ~ln:En@- "li6 can be :Asttypes.arg_label.Nolabel@'Nolabel@ ) (non labeled argument), ;Asttypes.arg_label.Labelled@(Labelled@ ' (labelled arguments) or ;Asttypes.arg_label.Optional@(Optional@5 (optional argument).@7 Invariant: %n > 0@@@@@@@@@@@@"ꑠ""@@3 'match E0 with P1 -> E1 | ... | Pn -> En@@@@@@@@@@@@"ԑ"Ӡ"@@3 %try E0 with P1 -> E1 | ... | Pn -> En@@@@@@@@@@@@""@@3.Pexp_tuple(el)+ represents-(E1, ..., En)4 when "el$ is ;(None, E1); ...; (None, En)@5(~L1:E1, ..., ~Ln:En)4 when "el$ is !(Some L1, E1); ...; (Some Ln, En)@-A mix, e.g., ,(~L1:E1, E2)4 when "el$ is 9(Some L1, E1); (None, E2)@@7 Invariant: &n >= 2@@@@@@@@@@@@"ޑ"ݠ"@@36Pexp_construct(C, exp), represents:!C4 when #exp$ is $None!,@#C E2 when #exp$ is &Some E!,@/C (E1, ..., En)& when #exp$ is 0@@@@@@@@@@@@##"@@3#E.l@@@@@@@@@@@@"둠"""@@3*E1.l <- E2@@@@@@@@@@@@"ʑ"@@31[| E1; ...; En |]@@@@@@@@@@@@""""@@35if E1 then E2 else E3@@@@@@@@@@@@"""@@3&E1; E2@@@@@@@@@@@@"""@@33while E1 do E2 done@@@@@@@@@@@@""~"v"n"f"^@@3 "Pexp_for(i, E1, E2, direction, E3), represents:;for i = E1 to E2 do E3 done7 when )direction$ is Asttypes.direction_flag.Downto@&Downto@@@@@@@@@@@@@@@"""{@@3'(E : T)@@@@@@@@@@@@"t"s"k"^@@37Pexp_coerce(E, from, T)+ represents((E :> T)+ when $from$ is $None!,@-(E : T0 :> T)& when $from$ is 'Some T0!.@@@@@@@@@@@@@@"""y@@3%E # m@@@@@@@@@@@@"i"h@@3'new M.c@@@@@@@@@@@@"X"W"F@@3&x <- 2@@@@@@@@@@@@"?">@@3;{< x1 = E1; ...; xn = En >}@@@@@@@@@@@@"""@@3+let SI in E@@@@@@@@@@@@" " @@3(assert E!.@2 Note: ,assert false < is treated in a special way by the type-checker.@@@@@@@@@@@@""@@3&lazy E@@@@@@@@@@@@""!@@37Used for method bodies.@ @ Can only be used as the expression under  'Parsetree.class_field_kind.Cfk_concreteK,Cfk_concrete@ % for methods (not values).@@@@@@@@@@@@""@@3.object ... end@@@@@@@@@@@@!!!@@31fun (type t) -> E@@@@@@@@@@@@!㑠!!@@3+(module ME)$ or /(module ME : S)!.@@@@@@@@@@@@!ב!@@3"- 1let* P = E0 in E1 !let* P0 = E00 and* P1 = E01 in E1@@@@@@@@@@@@@@!ؑ!@@3%[%id]@@@@@@@@@@@@!Б@@3!.@@@@@@@@@@@@@A@@ @#.Parsetree.case3/Values of type  E@, represents ((P -> E)$ or 0(P when E0 -> E)@@@@@@@@@@@@@!@@!@!@@!@!@@!@@A@@ @#/Parsetree.letop@@!@@!@!@@!@!@@!@@A@@ @#4Parsetree.binding_op@@!~@@!}@!j@@!i@!\@@![@!N@@!M@@A@@ @#=Parsetree.function_param_desc@@!=!<!4!'@@39Pparam_val (lbl, exp0, P): represents the parameter:!P. when #lbl$ is :Asttypes.arg_label.Nolabel@'Nolabel@- and $exp0$ is $None@$~l:P. when #lbl$ is ;Asttypes.arg_label.Labelled@*Labelled l@- and $exp0$ is $None@$?l:P. when #lbl$ is ;Asttypes.arg_label.Optional@*Optional l@- and $exp0$ is $None@+?l:(P = E0). when #lbl$ is ;Asttypes.arg_label.Optional@*Optional l@- and $exp0$ is 'Some E0@@0 Note: If "E09 is provided, only ;Asttypes.arg_label.Optional@(Optional@, is allowed.@@@@@@@@@@@@!!@@30Pparam_newtype x: represents the parameter ((type x)(. !x 5 carries the location of the identifier, whereas the *pparam_loc8 on the enclosing .function_param= node is the location of the ((type x)2 as a whole.@; Multiple parameters ,(type a b c) # are represented as multiple .Pparam_newtype2 nodes, let's say:@' [ { pparam_kind = Pparam_newtype a; pparam_loc = loc1 }; { pparam_kind = Pparam_newtype b; pparam_loc = loc2 }; { pparam_kind = Pparam_newtype c; pparam_loc = loc3 }; ] @; Here, the first loc $loc14 is the location of ,(type a b c) , and the subsequent locs $loc2% and $loc31 are the same as $loc1 ;, except marked as ghost locations. The locations on !a", !b", !c $, correspond to the variables !a", !b&, and !c4 in the source code.@@@@@@@@@@@@@A@@ /@#8Parsetree.function_param@@"&@@"%@"@@"@@A@@ :@#7Parsetree.function_body33See the comment on  'Parsetree.expression_desc.Pexp_functionK-Pexp_function@!.@@@@@@@@@@@@@""@@@" " !!@@3#In ?Pfunction_cases (_, loc, attrs) 3, the location extends from the start of the (function l keyword to the end of the last case. The compiler will only use typechecking-related attributes from %attrs -, e.g. enabling or disabling a warning.@@@@@@@@@@@@@A@@ t@#9Parsetree.type_constraint@@!!@@@!!!@@33See the comment on  'Parsetree.expression_desc.Pexp_functionK-Pexp_function@!.@@@@@@@@@@@@@A@@ @B@2Value descriptions@@# d3/Values of type  lE@, represents:(val x: T3, when  %Parsetree.value_description.pval_primJ)pval_prim@$ is "[]@=external x: T = "s1" ... "sn"2 when  %Parsetree.value_description.pval_primJ)pval_prim@$ is .["s1";..."sn"]@@@@@@@@@@@@@@@" @@"@" @@" @!@@!@!@@!33... [@@id1] [@@id2]@@@@@@@@@@@@!@@!@@A@@ @B@1Type declarations@@#:Parsetree.type_declaration3 DHere are type declarations and their representation, for various  %Parsetree.type_declaration.ptype_kindJ*ptype_kind@0 and  )Parsetree.type_declaration.ptype_manifestJ.ptype_manifest@( values:&type t( when )type_kind$ is  "Parsetree.type_kind.Ptype_abstractK.Ptype_abstract@5, and (manifest% is $None!,@+type t = T04 when )type_kind$ is  "Parsetree.type_kind.Ptype_abstractK.Ptype_abstract@5, and (manifest% is 'Some T0!,@5type t = C of T | ...4 when )type_kind$ is  !Parsetree.type_kind.Ptype_variantK-Ptype_variant@5, and (manifest% is $None!,@:type t = T0 = C of T | ...4 when )type_kind$ is  !Parsetree.type_kind.Ptype_variantK-Ptype_variant@5, and (manifest% is 'Some T0!,@4type t = {l: T; ...}4 when )type_kind$ is  Parsetree.type_kind.Ptype_recordK,Ptype_record@5, and (manifest% is $None!,@:type t = T0 = {l : T; ...}4 when )type_kind$ is  Parsetree.type_kind.Ptype_recordK,Ptype_record@5, and (manifest% is 'Some T0!,@+type t = ..4 when )type_kind$ is >Parsetree.type_kind.Ptype_openK*Ptype_open@5, and (manifest% is $None!.@@@@@@@@@@@@@@@"@@"@"@@"3.('a1,...'an) t@@@@@@@@@@@@"@@"3 ,... constraint T1=T1' ... constraint Tn=Tn'@@@@@@@@@@@@"@@"@"@@"3$for -= private ...@@@@@@@@@@@@"~@@"}3+represents #= T@@@@@@@@@@@@"t@@"s33... [@@id1] [@@id2]@@@@@@@@@@@@"l@@"k@@A@@F@#3Parsetree.type_kind@@"[@@@"U"T@@@"A"@@@39Invariant: non-empty list@@@@@@@@@@@@"3@@@"-",@@@@A@@e@# \3"- 2{ ...; l: T; ... } ! when  'Parsetree.label_declaration.pld_mutableJ+pld_mutable@ ! is ?Asttypes.mutable_flag.Immutable@)Immutable@!,:{ ...; mutable l: T; ... } ! when  'Parsetree.label_declaration.pld_mutableJ+pld_mutable@ ! is =Asttypes.mutable_flag.Mutable@'Mutable@!.@@* Note: !T* can be a  "Parsetree.core_type_desc.Ptyp_polyK)Ptyp_poly@!.@@@@@@@@@@@@@"r@@"q@"^@@"]@"P@@"O@"B@@"A@"4@@"333l : T [@id1] [@id2]@@@@@@@@@@@@@A@@@# !Parsetree.constructor_declaration@@")@@"(@"@@"@!@@!@!@@!@!@@!@!@@!ː36C of ... [@id1] [@id2]@@@@@@@@@@@@@A@@@#?Parsetree.constructor_arguments@@!!@@@!!@@3/Values of type +E@ - represents the constructor arguments of:2C of T1 * ... * Tn* when *res = None $, and !args = Pcstr_tuple [T1; ... ; Tn]!,@%C: T07 when -res = Some T0 $, and 5args = Pcstr_tuple []!,@6C: T1 * ... * Tn -> T0& when -res = Some T0 $, and !args = Pcstr_tuple [T1; ... ; Tn]!,@*C of {...}2 when *res = None $, and 9args = Pcstr_record [...]!,@.C: {...} -> T0. when -res = Some T0 $, and 9args = Pcstr_record [...]!.@@@@@@@@@@@@@@@A@@c@#8Parsetree.type_extension3 EDefinition of new extensions constructors for the extensive sum type !t% (-type t += ...").@@@@@@@@@@@@@"@@"@!@@!@!@@!@!@@!@!@@!@!@@!3$... %@@id1! %@@id2@@@@@@@@@@@@@A@@@#?Parsetree.extension_constructor@@!@@!@!@@!@!{@@!z@!m@@!l36C of ... [@id1] [@id2]@@@@@@@@@@@@@A@@@#8Parsetree.type_exception3?Definition of a new exception (+exception E").@@@@@@@@@@@@@!n@@!m@!`@@!_@!R@@!Q33... [@@id1] [@@id2]@@@@@@@@@@@@@A@@@# $Parsetree.extension_constructor_kind@@!G!F!2!*@@3 &Pext_decl(existentials, c_args, t_opt) < describes a new extension constructor. It can be:2C of T1 * ... * Tn6 when: ,existentials$ is "[]!,@&c_args$ is -[T1; ...; Tn]!,@%t_opt$ is $None@@@%C: T05 when ,existentials$ is "[]!,@&c_args$ is "[]!,@%t_opt$ is 'Some T0!.@@@6C: T1 * ... * Tn -> T05 when ,existentials$ is "[]!,@&c_args$ is -[T1; ...; Tn]!,@%t_opt$ is 'Some T0!.@@@>C: 'a... . T1 * ... * Tn -> T05 when ,existentials$ is (['a;...]!,@&c_args$ is .[T1; ... ; Tn]!,@%t_opt$ is 'Some T0!.@@@@@@@@@@@@@@@@!!@@3.Pext_rebind(D); re-export the constructor !D3 with the new name !C@@@@@@@@@@@@@A@@@A@.Class language@@B@ 'Type expressions for the class language@@#4Parsetree.class_type@@!@@!@!@@!@!@@!ʐ31... [@id1] [@id2]@@@@@@@@@@@@@A@@@#9Parsetree.class_type_desc@@!!!@@3"- !c1['a1, ..., 'an] c@@@@@@@@@@@@@@!!@@3.object ... end@@@@@@@@@@@@!!!!@@36Pcty_arrow(lbl, T, CT), represents:'T -> CT; when #lbl$ is :Asttypes.arg_label.Nolabel@'Nolabel@!,@*~l:T -> CT; when #lbl$ is ;Asttypes.arg_label.Labelled@*Labelled l@!,@*?l:T -> CT; when #lbl$ is ;Asttypes.arg_label.Optional@*Optional l@!.@@@@@@@@@@@@@@!ԑ!@@3#%id@@@@@@@@@@@@!̑!ˠ!@@30let open M in CT@@@@@@@@@@@@@A@@g@#9Parsetree.class_signature3/Values of type /class_signature, represents:8object('selfpat) ... end@.object ... end& when  $Parsetree.class_signature.pcsig_selfJ*pcsig_self@= is  !Parsetree.core_type_desc.Ptyp_anyK(Ptyp_any@@@@@@@@@@@@@@@@!@@!@!@@!@@A@@@#:Parsetree.class_type_field@@!@@!@!@@!@!@@!33... [@@id1] [@@id2]@@@@@@@@@@@@@A@@@#?Parsetree.class_type_field_desc@@!!@@3*inherit CT@@@@@@@@@@@@!!@@3(val x: T@@@@@@@@@@@@!_!^@@3+method x: T@3 Note: !T* can be a  "Parsetree.core_type_desc.Ptyp_polyK)Ptyp_poly@!.@@@@@@@@@@@@!A!@@@32constraint T1 = T2@@@@@@@@@@@@!+!*@@3'[@@@id]@@@@@@@@@@@@!#!"@@3&[%%id]@@@@@@@@@@@@@A@@ @#5Parsetree.class_infos3/Values of type 6class_expr class_infos, represents:-class c = ...@;class ['a1,...,'an] c = ...@5class virtual c = ...@@ 4 They are also used for "class type" declaration.@@@@@@@@@@@@!8Y@!3@@!2@!%@@!$@ @@ @ @@ @ @@ @ @@ ʐ33... [@@id1] [@@id2]@@@@@@@@@@@@@A@@A@#;Parsetree.class_description@@@A @I@# Parsetree.class_type_declaration@@@A @Q@B@ (Value expressions for the class language@@#4Parsetree.class_expr@@ @@ @ @@ @ @@ 31... [@id1] [@id2]@@@@@@@@@@@@@A@@k@#9Parsetree.class_expr_desc@@ x w f@@3!c% and 1['a1, ..., 'an] c@@@@@@@@@@@@ _ ^@@3.object ... end@@@@@@@@@@@@ W V N A 9@@39Pcl_fun(lbl, exp0, P, CE), represents:+fun P -> CE; when #lbl% is :Asttypes.arg_label.Nolabel@'Nolabel@; and $exp0$ is $None!,@.fun ~l:P -> CE; when #lbl% is ;Asttypes.arg_label.Labelled@*Labelled l@; and $exp0$ is $None!,@.fun ?l:P -> CE; when #lbl% is ;Asttypes.arg_label.Optional@*Optional l@; and $exp0$ is $None!,@5fun ?l:(P = E0) -> CE; when #lbl% is ;Asttypes.arg_label.Optional@*Optional l@; and $exp0$ is 'Some E0!.@@@@@@@@@@@@@@ Ñ   @@3 (Pcl_apply(CE, [(l1,E1) ; ... ; (ln,En)])8 represents 4CE ~l1:E1 ... ~ln:En.. "li 3 can be empty (non labeled argument) or start with !? ! (optional argument).@8 Invariant: %n > 0@@@@@@@@@@@@    @@3 ,Pcl_let(rec, [(P1, E1); ... ; (Pn, En)], CE), represents: %let P1 = E1 and ... and Pn = EN in CE6 when #rec$ is >Asttypes.rec_flag.Nonrecursive@,Nonrecursive@!,@ )let rec P1 = E1 and ... and Pn = EN in CE6 when #rec$ is ;Asttypes.rec_flag.Recursive@)Recursive@!.@@@@@@@@@@@@@@ Б Ϡ @@3)(CE : CT)@@@@@@@@@@@@  @@3%[%id]@@@@@@@@@@@@   @@30let open M in CE@@@@@@@@@@@@@A@@@#9Parsetree.class_structure3/Values of type  E@, represents:7object(selfpat) ... end@.object ... end& when  $Parsetree.class_structure.pcstr_selfJ*pcstr_self@= is ?Parsetree.pattern_desc.Ppat_anyK(Ppat_any@@@@@@@@@@@@@@@@ @@ @ @@ @@A@@@#5Parsetree.class_field@@ @@ @ @@ @ @@ 33... [@@id1] [@@id2]@@@@@@@@@@@@@A@@@#:Parsetree.class_field_desc@@   } u@@38Pcf_inherit(flag, CE, s), represents:*inherit CE: when $flag$ is  MT2@@@@@@@@@@@@ đ à @@3+MT with ...@@@@@@@@@@@@  @@31module type of ME@@@@@@@@@@@@  @@3%[%id]@@@@@@@@@@@@  @@3*(module M)@@@@@@@@@@@@@A@@0@#;Parsetree.functor_parameter@@ @@3"()@@@@@@@@@@@@   w@@3/Named(name, MT), represents:((X : MT)& when $name$ is &Some X!,@((_ : MT)& when $name$ is $None@@@@@@@@@@@@@@@A@@s@#3Parsetree.signature@@@A @{@#8Parsetree.signature_item@@ @@ @ x@@ w@@A@@@#=Parsetree.signature_item_desc@@ g f@@3"- (val x: T=external x: T = "s1" ... "sn"@@@@@@@@@@@@@@ h g _@@3 #type t1 = ... and ... and tn = ...@@@@@@@@@@@@ R Q@@3 $type t1 := ... and ... and tn := ...@@@@@@@@@@@@ D C@@3.type t1 += ...@@@@@@@@@@@@ < ;@@30exception C of T@@@@@@@@@@@@ 4 3@@3,module X = M% and -module X : MT@@@@@@@@@@@@ 2 1@@3-module X := M@@@@@@@@@@@@ * )@@3 (module rec X1 : MT1 and ... and Xn : MTn@@@@@@@@@@@@  @@32module type S = MT% and -module type S@@@@@@@@@@@@  @@35module type S := ...@@@@@@@@@@@@  @@3&open X@@@@@@@@@@@@  @@3*include MT@@@@@@@@@@@@  @@3 #class c1 : ... and ... and cn : ...@@@@@@@@@@@@@@3 *class type ct1 = ... and ... and ctn = ...@@@@@@@@@@@@摠@@3'[@@@id]@@@@@@@@@@@@ޑݠ@@3&[%%id]@@@@@@@@@@@@@A@@D@#@@#9Parsetree.with_constraint@@)(@@33with type X.t = ...@ o Note: the last component of the longident must match the name of the type_declaration.@@@@@@@@@@@@@@33with module X.Y = Z@@@@@@@@@@@@@@38with module type X.Y = Z@@@@@@@@@@@@ّؠ@@3?with module type X.Y := sig end@@@@@@@@@@@@@@3 1with type X.t := ..., same format as [Pwith_type]@@@@@@@@@@@@@@34with module X.Y := Z@@@@@@@@@@@@@A@@@B@ )Value expressions for the module language@@#5Parsetree.module_expr@@@@@|@@{@n@@m31... [@id1] [@id2]@@@@@@@@@@@@@A@@@#:Parsetree.module_expr_desc@@cb@@3!X@@@@@@@@@@@@RQ@@3.struct ... end@@@@@@@@@@@@JIA@@36functor(X : MT1) -> ME@@@@@@@@@@@@:91@@3(ME1(ME2)@@@@@@@@@@@@*)@@3%ME1()@@@@@@@@@@@@"!@@3)(ME : MT)@@@@@@@@@@@@@@3'(val E)@@@@@@@@@@@@  @@3%[%id]@@@@@@@@@@@@@A@@`@#3Parsetree.structure@@@A@h@#8Parsetree.structure_item@@@@@@@@@A@@s@#=Parsetree.structure_item_desc@@ёР@@3!E@@@@@@@@@@@@@@3 ,Pstr_value(rec, [(P1, E1 ; ... ; (Pn, En))]), represents:?let P1 = E1 and ... and Pn = EN6 when #rec$ is >Asttypes.rec_flag.Nonrecursive@,Nonrecursive@!,@ $let rec P1 = E1 and ... and Pn = EN 6 when #rec$ is ;Asttypes.rec_flag.Recursive@)Recursive@!.@@@@@@@@@@@@@@ޑ@@3"- (val x: T>external x: T = "s1" ... "sn" @@@@@@@@@@@@@@ߑޠ@@3 "type t1 = ... and ... and tn = ...@@@@@@@@@@@@ɑ@@3.type t1 += ...@@@@@@@@@@@@@@3"- 0exception C of T1exception C = M.X@@@@@@@@@@@@@@‘@@3-module X = ME@@@@@@@@@@@@@@3 (module rec X1 = ME1 and ... and Xn = MEn@@@@@@@@@@@@@@32module type S = MT@@@@@@@@@@@@@@3&open X@@@@@@@@@@@@@@3 #class c1 = ... and ... and cn = ...@@@@@@@@@@@@@@3 *class type ct1 = ... and ... and ctn = ...@@@@@@@@@@@@@@3*include ME@@@@@@@@@@@@xw@@3'[@@@id]@@@@@@@@@@@@pog@@3&[%%id]@@@@@@@@@@@@@A@@Y@#:Parsetree.value_constraint@@^\@@[@B@@A@@@@0.@@-@@@@@@3"- 2Pvc_constraint { locally_abstract_univars=[]; typ} : is a simple type constraint on a value binding: , let x : typ3More generally, in /Pvc_constraint { locally_abstract_univars; typ}( 8locally_abstract_univars : is the list of locally abstract type variables in 9 let x: type a ... . typ @ &Pvc_coercion { ground=None; coercion }, represents ,let x :> typ@ (Pvc_coercion { ground=Some g; coercion }, represents 0let x : g :> typ@@@@@@@@@@@@@@@A@@@#7Parsetree.value_binding3?let pat : type_constraint = exp@@@@@@@@@@@@@E@@D@7@@6@)@@(@@@@@@@@A@@@#8Parsetree.module_binding3/Values of type .module_binding, represents -module X = ME@@@@@@@@@@@@@@@@@@@@@@@@@@A@@@A@(Toplevel@@B@0Toplevel phrases@@#9Parsetree.toplevel_phrase@@Α@@@@@3$#use", %#load$ ...@@@@@@@@@@@@@A@@@@#d@@A)Longident(Location(Asttypes@@@@@