T>Ϡ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&@@@ OM'@@@ !@@@ #@@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@@@L@@@NF)ParsetreeE)core_type@@@O@@@Q@@^sKM_sK~@@]_@+Ptyp_object萠H)ParsetreeG,object_field@@@R@@@T(AsttypesI+closed_flag@@@U@@yacya@@~`@*Ptyp_class鐠(AsttypesK#loc)LongidentJ!t@@@V@@@XM)ParsetreeL)core_type@@@Y@@@[@@'@@a@*Ptyp_aliasꐠ)ParsetreeN)core_type@@@\(AsttypesP#locO@@@]@@@_@@  5@@b@,Ptyp_variant될@R)ParsetreeQ)row_field@@@`@@@b(AsttypesS+closed_flag@@@c\U(AsttypesT%label@@@d@@@f@@@h@@IKI@@c@)Ptyp_poly쐠uX(AsttypesW#locV@@@i@@@k@@@m)ParsetreeY)core_type@@@n@@&RT'R~@@%d@,Ptyp_package퐠)ParsetreeZ,package_type@@@o@@8!#9!A@@7e@)Ptyp_open(Asttypes\#loc)Longident[!t@@@p@@@r)Parsetree])core_type@@@s@@\XZ]X@@[f@.Ptyp_extension)Parsetree^)extension@@@t@@no@@mg@@@A@@@@@r\ Z Z@@@@pN@B@,package_typeC;@@(ppt_path@@(Asttypes`#loc)Longident_!t@@@u@@@w@@h@/ppt_constraints@@d@(Asttypesb#loc)Longidenta!t@@@z@@@|@)Parsetreec)core_type@@@}@@~@@@8@@i@'ppt_loc@@(Locatione!t@@@9>9R@@j@)ppt_attrs@@)Parsetreef*attributes@@@SXSn@@k@@@A@@@@@ot@@@@O@B@)row_fieldC;@@(prf_desc@@)Parsetreeg.row_field_desc@@@@@l@'prf_loc@@(Locationh!t@@@@@m@.prf_attributes@@)Parsetreei*attributes@@@@@n@@@A@@@@@@@@@P@B@.row_field_descC;@@$Rtag(Asttypesk#loc(Asttypesj%label@@@@@@$booll@@@n)Parsetreem)core_type@@@@@@@@RS+@@Qo@(Rinherit)Parsetreeo)core_type@@@@@d i ke i @@cp@@@A@@@@@h@@@@fQ@B@,object_fieldC;@@(pof_desc@@)Parsetreep1object_field_desc@@@}  ~  @@|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@@@@@!?!A!?!X@@u@@@A@@@@@!!@@@@S@B@'patternC;@@)ppat_desc@@)Parsetreew,pattern_desc@@@!!!!@@v@(ppat_loc@@(Locationx!t@@@!!!!@@w@.ppat_loc_stack@@)Parsetreey.location_stack@@@!!!!@@x@/ppat_attributes@@)Parsetreez*attributes@@@&!!'!"@@%y@@@A@@@@@*!o!o+"!"&@@@@)T@B@,pattern_descC;@@(Ppat_any@@9";"=:";"G@@8z@(Ppat_var(Asttypes|#loc%{@@@@@@@@Q"a"cR"a"{@@P{@*Ppat_alias)Parsetree}'pattern@@@(Asttypes#locF~@@@@@@@@r""s""@@q|@-Ppat_constant)Parsetree(constant@@@@@"""#@@}@-Ppat_interval)Parsetree(constant@@@)Parsetree(constant@@@@@#d#f#d#@@~@*Ppat_tuple@@@@@@@à@)Parsetree'pattern@@@@@@@@Ǡ(Asttypes+closed_flag@@@@@$%$'$%$l@@@.Ppat_construct(Asttypes#loc)Longident!t@@@@@@ˠ@`(Asttypes#loc@@@@@@@@@Р@)Parsetree'pattern@@@@@@@@@@&&&&@@@,Ppat_variant (Asttypes%label@@@ՠ)Parsetree'pattern@@@@@@@@3(=(?4(=(g@@2@+Ppat_record @(Asttypes#loc)Longident!t@@@@@@۠@)Parsetree'pattern@@@@@@@@ߠ(Asttypes+closed_flag@@@@@k((l():@@j@*Ppat_array )Parsetree'pattern@@@@@@@@****@@@'Ppat_or )Parsetree'pattern@@@)Parsetree'pattern@@@@@****@@@/Ppat_constraint )Parsetree'pattern@@@)Parsetree)core_type@@@@@ ++  ++1@@@)Ppat_type(Asttypes#loc)Longident!t@@@@@@@@!+L+N!+L+l@@@)Ppat_lazy)Parsetree'pattern@@@@@"++"++@@@+Ppat_unpack(Asttypes#locˠ@@@@@@@@@נ)Parsetree,package_type@@@@@@@@#++#++@@@.Ppat_exception)Parsetree'pattern@@@@@#*-Q-S$*-Q-n@@"@+Ppat_effect)Parsetree'pattern@@@)Parsetree'pattern@@@@@>+--?+--@@=@.Ppat_extension)Parsetree)extension@@@@@P,--Q,--@@O@)Ppat_open(Asttypes#loc)Longident!t@@@@@@)Parsetree'pattern@@@@@t-..u-../@@s@@@A@@@@@x"("(@@@@vU@B@*expressionC;@@)pexp_desc@@)Parsetree/expression_desc@@@3.~.3.~.@@@(pexp_loc@@(Location!t@@@4..4..@@@.pexp_loc_stack@@)Parsetree.location_stack@@@5..5..@@@/pexp_attributes@@)Parsetree*attributes@@@6..6./@@@@@A@@@@@1.g.g7//$@@@@V@B@/expression_descC;@@*Pexp_ident(Asttypes#loc)Longident!t@@@@@@ @@:/</>:/</]@@@-Pexp_constant)Parsetree(constant@@@ @@=//=//@@@(Pexp_let(Asttypes(rec_flag@@@ s)Parsetree-value_binding@@@ @@@)Parsetree*expression@@@@@@00@00R@@@-Pexp_function)Parsetree.function_param@@@@@@ )Parsetree/type_constraint@@@@@@)Parsetree-function_body@@@@@MG11NH12@@L@*Pexp_apply)Parsetree*expression@@@@(Asttypes)arg_label@@@@)Parsetree*expression@@@@@@@@@@|W44}W44@@{@*Pexp_match)Parsetree*expression@@@)Parsetree$case@@@@@@!@@b6m6ob6m6@@@(Pexp_try)Parsetree*expression@@@")Parsetree$case@@@#@@@%@@d66d66@@@*Pexp_tuple 4 @@@@&@@@(@)Parsetree*expression@@@)@@*@@@,@@f7)7+f7)7\@@@.Pexp_construct!(Asttypes#loc)Longident!t@@@-@@@/ՠ)Parsetree*expression@@@0@@@2@@ q88 q88@@ @,Pexp_variant"(Asttypes%label@@@3)Parsetree*expression@@@4@@@6@@ /w99 0w9:@@ .@+Pexp_record#ˠ@(Asttypes#loc)Longident!t@@@7@@@9@)Parsetree*expression@@@:@@;@@@= 2)Parsetree*expression@@@>@@@@@@ l|:: m|::@@ k@*Pexp_field$)Parsetree*expression@@@A(Asttypes#loc)Longident!t@@@B@@@D@@ ;; ;@@ i@/Pexp_constraint+)Parsetree*expression@@@[)Parsetree)core_type@@@\@@ ?F?H ?F?s@@ @+Pexp_coerce,)Parsetree*expression@@@] k)Parsetree)core_type@@@^@@@`)Parsetree)core_type@@@a@@ ?? ??@@ @)Pexp_send-)Parsetree*expression@@@b(Asttypes#loc(Asttypes%label@@@c@@@e@@ @k@m @k@@@ @(Pexp_new.(Asttypes#loc)Longident!t@@@f@@@h@@ @@ @@@@ @/Pexp_setinstvar/(Asttypes#loc(Asttypes%label@@@i@@@k)Parsetree*expression@@@l@@ @@ @A@@ @-Pexp_override0 @(Asttypes#loc(Asttypes%label@@@m@@@o@)Parsetree*expression@@@p@@q@@@s@@ @AA AAAF@@ ?@0Pexp_struct_item1)Parsetree.structure_item@@@t)Parsetree*expression@@@u@@ [ArAt \ArA@@ Z@+Pexp_assert2)Parsetree*expression@@@v@@ mAA nAA@@ l@)Pexp_lazy3)Parsetree*expression@@@w@@ BUBW BUBp@@ ~@)Pexp_poly4)Parsetree*expression@@@x e)Parsetree)core_type@@@y@@@{@@ BB BB@@ @+Pexp_object5)Parsetree/class_structure@@@|@@ ClCn ClC@@ @,Pexp_newtype6(Asttypes#loc @@@}@@@)Parsetree*expression@@@@@ CC CC@@ @)Pexp_pack7)Parsetree+module_expr@@@ )Parsetree,package_type@@@@@@@@ CC CD"@@ @*Pexp_letop8)Parsetree%letop@@@@@ DTDV DTDk@@ @.Pexp_extension9)Parsetree)extension@@@@@ DD DD@@ @0Pexp_unreachable:@@ DD DE@@ @@@A@@@@@ #9/&/&@@@@ !W@B@$caseC;@@&pc_lhs;@@)Parsetree'pattern@@@ 8E$E) 9E$E9@@ 7@(pc_guard<@@ )Parsetree*expression@@@@@@ ME:E? NE:E[@@ L@&pc_rhs=@@)Parsetree*expression@@@ ]E\Ea ^E\Et@@ \@@@A@@@@@ aEE bEuEy@@@@ `X@B@%letopC;@@$let_>@@)Parsetree*binding_op@@@ wEE xEE@@ v@$ands?@@ )Parsetree*binding_op@@@@@@ EE EF@@ @$body@@@)Parsetree*expression@@@ FF  FF@@ @@@A@@@@@ EE FF"@@@@ Y@B@*binding_opC;@@'pbop_opA@@(Asttypes #loc @@@@@@ F9F= F9FR@@ @(pbop_patB@@)Parsetree 'pattern@@@ FSFW FSFj@@ @(pbop_expC@@)Parsetree *expression@@@ FkFo FkF@@ @(pbop_locD@@(Location !t@@@ FF FF@@ @@@A@@@@@ F$F$ FF@@@@ Z@B@3function_param_descC;@@*Pparam_valE(Asttypes )arg_label@@@ ݠ)Parsetree*expression@@@@@@)Parsetree'pattern@@@@@ FF !FF@@ @.Pparam_newtypeF(Asttypes#loc @@@@@@@@ 8I^I` 9I^I~@@ 7@@@A@@@@@ <FF@@@@ :[@B@.function_paramC;@@*pparam_locG@@(Location!t@@@ QLL RLM@@ P@+pparam_descH@@)Parsetree3function_param_desc@@@ aMM  bMM.@@ `@@@A@@@@@ eLL fM/M2@@@@ d\@B@-function_bodyC;@@.Pfunction_bodyI)Parsetree*expression@@@@@ }MHMJ ~MHMh@@ |@/Pfunction_casesJ )Parsetree$case@@@@@@(Location!t@@@ )Parsetree*attributes@@@@@ MiMk MiM@@ @@@A@@@@@ M4M4@@@@ ]@B@/type_constraintC;@@+PconstraintK)Parsetree)core_type@@@@@ OO OO1@@ @'PcoerceL )Parsetree)core_type@@@@@@Ǡ)Parsetree)core_type@@@@@ O2O4 O2O]@@ @@@A@@@@@ NN@@@@ ^@B@1value_descriptionC;@@)pval_nameM@@(Asttypes#loc @@@@@@˰ OO OP@@@)pval_typeN@@)Parsetree)core_type@@@ΰ PP  PP@@@)pval_primO@@   @@@@@@Ӱ$P P%%P P<@@#@/pval_attributesP@@)Parsetree!*attributes@@@ְ4P=PB5P=P^@@3@(pval_locQ@@(Location"!t@@@ٰDPPEPP@@C@@@A@@@@@H OOIPP@@@@G_@B@0type_declarationC;@@*ptype_nameR@@(Asttypes$#loc8#@@@@@@dQQeQQ@@c@,ptype_paramsS@@ (@)Parsetree%)core_type@@@䠠@@(Asttypes&(variance@@@堠@(Asttypes'+injectivity@@@@@@@@@@RRRR?@@@1ptype_constraintsT@@ ,@)Parsetree))core_type@@@@)Parsetree*)core_type@@@@(Location+!t@@@@@@@@ R^Rc R^R@@@*ptype_kindU@@)Parsetree-)type_kind@@@"RR"RR@@@-ptype_privateV@@(Asttypes.,private_flag@@@#RR#RS@@@.ptype_manifestW@@)Parsetree/)core_type@@@@@@$S7S<$S7S]@@@0ptype_attributesX@@)Parsetree0*attributes@@@ %SwS| %SwS@@@)ptype_locY@@(Location1!t@@@&SS&SS@@@@@A@@@@@QQ'SS@@@@`@B@)type_kindC;@@.Ptype_abstractZ@@,CXX-CXX@@+@-Ptype_variant[3)Parsetree27constructor_declaration@@@ @@@ @@DDXXEDXX@@C@,Ptype_record\5)Parsetree41label_declaration@@@ @@@@@\EXX]EXY@@[@*Ptype_open]@@eFY1Y3fFY1Y?@@d@.Ptype_external^I6@@@@@tGY@YBuGY@Y\@@s@@@A@@@@@xBXX@@@@va@B@1label_declarationC;@@(pld_name_@@(Asttypes8#locg7@@@@@@KY|YKY|Y@@@+pld_mutable`@@(Asttypes9,mutable_flag@@@LYYLYY@@@(pld_typea@@)Parsetree:)core_type@@@MYYMYY@@@'pld_locb@@(Location;!t@@@NYYNYY@@@.pld_attributesc@@)Parsetree<*attributes@@@OYYOYZ @@@@@A@@@@@IY^Y^PZ,Z1@@@@b@B@7constructor_declarationC;@@(pcd_named@@(Asttypes>#loc=@@@$@@@&^\\^\\3@@@(pcd_varse@@gA(Asttypes@#loc?@@@)@@@+@@@-_\4\9_\4\S@@@(pcd_argsf@@)ParsetreeB5constructor_arguments@@@0`\T\Y `\T\y@@@'pcd_resg@@)ParsetreeC)core_type@@@3@@@54a\z\5a\z\@@3@'pcd_loch@@(LocationD!t@@@8Db\\Eb\\@@C@.pcd_attributesi@@)ParsetreeE*attributes@@@;Tc\\Uc\\@@S@@@A@@@@@X\[[Yd\\@@@@Wc@B@5constructor_argumentsC;@@+Pcstr_tuplejG)ParsetreeF)core_type@@@A@@@C@@vg]]wg]]<@@u@,Pcstr_recordkI)ParsetreeH1label_declaration@@@D@@@F@@h]=]?h]=]g@@@@@A@@@@@f\\@@@@d@B@.type_extensionC;@@+ptyext_pathl@@(AsttypesK#loc)LongidentJ!t@@@G@@@Iy`(`-y`(`J@@@-ptyext_paramsm@@$O@)ParsetreeL)core_type@@@L@@(AsttypesM(variance@@@M@(AsttypesN+injectivity@@@N@@O@@P@@@Rz`K`Pz`K`@@@3ptyext_constructorsn@@VQ)ParsetreeP5extension_constructor@@@U@@@W{``{``@@@.ptyext_privateo@@(AsttypesR,private_flag@@@Z|`` |``@@@*ptyext_locp@@(LocationS!t@@@]}``}`a@@@1ptyext_attributesq@@)ParsetreeT*attributes@@@`(~aa)~aa%@@'@@@A@@@@@,w` ` -aFaK@@@@+e@B@5extension_constructorC;@@)pext_namer@@(AsttypesV#locU@@@f@@@hHaaIaa@@G@)pext_kinds@@)ParsetreeW:extension_constructor_kind@@@kXaaYab@@W@(pext_loct@@(LocationX!t@@@nhb b%ib b:@@g@/pext_attributesu@@)ParsetreeY*attributes@@@qxb;b@yb;b\@@w@@@A@@@@@|aa}bb@@@@{f@B@.type_exceptionC;@@2ptyexn_constructorv@@)ParsetreeZ5extension_constructor@@@wbbbb@@@*ptyexn_locw@@(Location[!t@@@zbbbb@@@1ptyexn_attributesx@@)Parsetree\*attributes@@@}bbbc@@@@@A@@@@@bbc2c5@@@@g@B@:extension_constructor_kindC;@@)Pext_decly2_(Asttypes^#loc]@@@@@@@@@)Parsetree`5constructor_arguments@@@)Parsetreea)core_type@@@@@@@@cccc@@@+Pext_rebindz(Asttypesc#loc)Longidentb!t@@@@@@@@ g,g. g,gN@@ @@@A@@@@@cmcm@@@@h@B@*class_typeC;@@)pcty_desc{@@)Parsetreed/class_type_desc@@@%hh&hh#@@$@(pcty_loc|@@(Locatione!t@@@5h$h)6h$h>@@4@/pcty_attributes}@@)Parsetreef*attributes@@@Eh?hDFh?h`@@D@@@A@@@@@IggJhh@@@@Hi@B@/class_type_descC;@@+Pcty_constr~(Asttypesh#loc)Longidentg!t@@@@@@j)Parsetreei)core_type@@@@@@@@yhhzhh@@x@.Pcty_signature)Parsetreek/class_signature@@@@@iiii*@@@*Pcty_arrow(Asttypesl)arg_label@@@)Parsetreem)core_type@@@)Parsetreen*class_type@@@@@iDiFiDix@@@.Pcty_extension)Parsetreeo)extension@@@@@jjjk@@@)Pcty_open)Parsetreep0open_description@@@)Parsetreeq*class_type@@@@@kk!kkM@@@@@A@@@@@hh@@@@j@B@/class_signatureC;@@*pcsig_self@@)Parsetreer)core_type@@@kkkk@@@,pcsig_fields@@it)Parsetrees0class_type_field@@@@@@ kk kk@@ @@@A@@@@@kjkjkk@@@@k@B@0class_type_fieldC;@@)pctf_desc@@)Parsetreeu5class_type_field_desc@@@%ll&ll@@$@(pctf_loc@@(Locationv!t@@@5ll6lm@@4@/pctf_attributes@@)Parsetreew*attributes@@@EmmFmm3@@D@@@A@@@@@IllJmVm[@@@@Hl@B@5class_type_field_descC;@@,Pctf_inherit)Parsetreex*class_type@@@@@amym{bmym@@`@(Pctf_val@(Asttypesz#loc(Asttypesy%label@@@@@@@(Asttypes{,mutable_flag@@@@(Asttypes|,virtual_flag@@@@)Parsetree})core_type@@@@@@@mmmm@@@+Pctf_method@(Asttypes#loc(Asttypes~%label@@@@@@@(Asttypes,private_flag@@@@(Asttypes,virtual_flag@@@@)Parsetree)core_type@@@@@@@n n n nS@@@/Pctf_constraint@)Parsetree)core_type@@@ @)Parsetree)core_type@@@@@@@nnnn@@@.Pctf_attribute)Parsetree)attribute@@@@@ o oo o,@@ @.Pctf_extension)Parsetree)extension@@@@@oBoD oBoa@@@@@A@@@@@#m]m]@@@@!m@B@+class_infosC;!a@@A(pci_virt@@(Asttypes,virtual_flag@@@Ȱ=oo>oo@@<@*pci_params@@@)Parsetree)core_type@@@ˠ@@(Asttypes(variance@@@̠@(Asttypes+injectivity@@@@@@@@@@Ѱooopoo@@n@(pci_name@@(Asttypes#locY@@@@@@ְooop@@@(pci_expr@@cD@ٰpp pp@@ @'pci_loc@@(Location!t@@@ݰpppp1@@ @.pci_attributes@@)Parsetree*attributes@@@p2p7p2pR@@ @@@A@Y@@@@@ototpupz@@@@n@B@1class_descriptionC;@@,A)Parsetree+class_infos)Parsetree*class_type@@@@@@@@@@qDqDqDqr@@@@o@B@6class_type_declarationC;@@GA)Parsetree+class_infos)Parsetree*class_type@@@@@@@@@@qtqtqtq@@@@p@B@*class_exprC;@@(pcl_desc@@)Parsetree/class_expr_desc@@@qqqr@@ @'pcl_loc@@(Location!t@@@rrrr.@@ @.pcl_attributes@@)Parsetree*attributes@@@!r/r4"r/rO@@ @@@A@@@@@%qq&rnrs@@@@$q@B@/class_expr_descC;@@*Pcl_constr(Asttypes#loc)Longident!t@@@@@@)Parsetree)core_type@@@@@@@@UrrVrr@@T@-Pcl_structure)Parsetree/class_structure@@@@@grrhrs @@f@'Pcl_fun(Asttypes)arg_label@@@M)Parsetree*expression@@@@@@)Parsetree'pattern@@@)Parsetree*class_expr@@@@@ s%s' s%sh@@@)Pcl_apply)Parsetree*class_expr@@@@(Asttypes)arg_label@@@@)Parsetree*expression@@@@@@@@@@vvvvT@@@'Pcl_let(Asttypes(rec_flag@@@G)Parsetree-value_binding@@@@@@)Parsetree*class_expr@@@ @@ wLwN wLw@@@.Pcl_constraint)Parsetree*class_expr@@@ )Parsetree*class_type@@@ @@ 'xx'xy@@ @-Pcl_extension)Parsetree)extension@@@ @@(y$y& (y$yB@@@(Pcl_open)Parsetree0open_description@@@ )Parsetree*class_expr@@@@@:)ySyU;)ySy@@9@@@A@@@@@>ruru@@@@{{>{{@@@'Pcf_val@(Asttypes#loc(Asttypes%label@@@'@@@)@(Asttypes,mutable_flag@@@*@)Parsetree0class_field_kind@@@+@@,@@M~Z~\M~Z~@@@*Pcf_method@(Asttypes#loc(Asttypes%label@@@-@@@/@(Asttypes,private_flag@@@0@)Parsetree0class_field_kind@@@1@@2@@B\C\@@A@.Pcf_constraint@)Parsetree)core_type@@@3@)Parsetree)core_type@@@4@@5@@bbcb@@a@/Pcf_initializer)Parsetree*expression@@@6@@tcuc#@@s @-Pcf_attribute)Parsetree)attribute@@@7@@d<>d<Z@@!@-Pcf_extension)Parsetree)extension@@@8@@eprep@@"@@@A@@@@@={z{z@@@@u@B@0class_field_kindC;@@+Cfk_virtual)Parsetree)core_type@@@9@@hh@@#@,Cfk_concrete(Asttypes-override_flag@@@:)Parsetree*expression@@@;@@ii@@$@@@A@@@@@g@@@@v@B@1class_declarationC;@@HA)Parsetree+class_infos)Parsetree*class_expr@@@<@@@>@@@@kk3@@@@w@B@+module_typeC;@@)pmty_desc@@)Parsetree0module_type_desc@@@?rr@@%@(pmty_loc@@(Location!t@@@Bss@@&@/pmty_attributes@@)Parsetree*attributes@@@E"t#t@@!'@@@A@@@@@&p'u@@@@%x@B@0module_type_descC;@@*Pmty_ident(Asttypes#loc)Longident!t@@@H@@@J@@Gx8:Hx8Y@@F(@.Pmty_signature)Parsetree)signature@@@K@@YyZy@@X)@,Pmty_functor)Parsetree1functor_parameter@@@L)Parsetree+module_type@@@M@@tzuz@@s*@)Pmty_with)Parsetree+module_type@@@NӠ)Parsetree/with_constraint@@@O@@@Q@@||E@@+@+Pmty_typeof)Parsetree+module_expr@@@R@@}\^}\z@@,@.Pmty_extension)Parsetree)extension@@@S@@~~@@-@*Pmty_alias(Asttypes#loc)Longident!t@@@T@@@V@@@@.@@@A@@@@@w!!@@@@y@B@1functor_parameterC;@@$Unit@@@@/@%Named(Asttypes#locˠ@@@W@@@Y@@@[)Parsetree+module_type@@@\@@ -/ -Y@@ 0@@@A@@@@@@@@@z@B@)signatureC;@@Aܠ)Parsetree.signature_item@@@]@@@_@@@@'( @@@@&{@B@.signature_itemC;@@)psig_desc@@)Parsetree3signature_item_desc@@@`=',>'K@@<1@(psig_loc@@(Location!t@@@cMLQNLf@@L2@@@A@@@@@Q  Rgl@@@@P|@B@3signature_item_descC;@@*Psig_value)Parsetree1value_description@@@f@@ij@@h3@)Psig_type(Asttypes(rec_flag@@@g)Parsetree0type_declaration@@@h@@@j@@.@@4@.Psig_typesubst)Parsetree0type_declaration@@@k@@@m@@bdb@@5@+Psig_typext)Parsetree.type_extension@@@n@@@@6@.Psig_exception)Parsetree.type_exception@@@o@@"@@7@+Psig_module)Parsetree2module_declaration@@@p@@>@>c@@8@-Psig_modsubst)Parsetree3module_substitution@@@q@@@@9@.Psig_recmodule`)Parsetree2module_declaration@@@r@@@t@@@@:@,Psig_modtypeÐ)Parsetree7module_type_declaration@@@u@@686a@@;@1Psig_modtypesubstĐ)Parsetree7module_type_declaration@@@v@@&'@@%<@)Psig_openŐ)Parsetree0open_description@@@w@@89@@7=@,Psig_includeƐ)Parsetree3include_description@@@x@@J"$K"I@@I>@*Psig_classǐ)Parsetree1class_description@@@y@@@{@@b_ac_@@a?@/Psig_class_typeȐ)Parsetree6class_type_declaration@@@|@@@~@@z{@@y@@.Psig_attributeɐ)Parsetree)attribute@@@@@(*(G@@A@.Psig_extensionʐ)Parsetree)extension@@@)Parsetree*attributes@@@@@]_]@@B@@@A@@@@@nn@@@@}@B@2module_declarationC;@@(pmd_name@@(Asttypes#loc@@@@@@@@@@@C@(pmd_type@@)Parsetree+module_type@@@@@D@.pmd_attributes@@)Parsetree*attributes@@@@@E@'pmd_loc@@(Location!t@@@<A<U@@F@@@A@@@@@V[@@@@~@B@3module_substitutionC;@@(pms_name@@(Asttypes#loc@@@@@@@@G@,pms_manifest@@(Asttypes#loc)Longident!t@@@@@@45@@3H@.pms_attributes@@)Parsetree*attributes@@@DE@@CI@'pms_loc@@(Location!t@@@T>CU>W@@SJ@@@A@@@@@XYX]@@@@W@B@7module_type_declarationC;@@)pmtd_name@@(Asttypes#locH@@@@@@tu@@sK@)pmtd_type@@O)Parsetree+module_type@@@@@@@@L@/pmtd_attributes@@)Parsetree*attributes@@@$@@M@(pmtd_loc@@(Location!t@@@GLGa@@N@@@A@@@@@bg@@@@@@B@*open_infosC;!a@@A*popen_expr@@ D@DIDX@@O@.popen_override@@(Asttypes-override_flag@@@Y^Y|@@P@)popen_loc@@(Location!t@@@ð}}@@Q@0popen_attributes@@)Parsetree*attributes@@@ư@@R@@@A@Y@@@@@**@@@@A@B@0open_descriptionC;@@oA)Parsetree *open_infos(Asttypes #loc)Longident !t@@@@@@@@@@@@@666g@@@@B@B@0open_declarationC;@@A)Parsetree *open_infos)Parsetree +module_expr@@@@@@@@@@78@@@@6C@B@-include_infosC;!a@@A)pincl_mod@@ D@ҰLM@@KS@)pincl_loc@@(Location!t@@@ְ\]@@[T@0pincl_attributes@@)Parsetree*attributes@@@ٰlm@@kU@@@A@Y@@@@@rhhs@@@@qD@B@3include_descriptionC;@@A)Parsetree-include_infos)Parsetree+module_type@@@@@@@@@@@@@@E@B@3include_declarationC;@@A)Parsetree-include_infos)Parsetree+module_expr@@@@@@@@@@XXX@@@@F@B@/with_constraintC;@@*Pwith_typeސ(Asttypes#loc)Longident!t@@@@@@)Parsetree0type_declaration@@@@@@@V@,Pwith_moduleߐ(Asttypes#loc)Longident!t@@@@@@(Asttypes#loc)Longident!t@@@@@@@@@@W@-Pwith_modtype(Asttypes#loc)Longident!t@@@@@@)Parsetree+module_type@@@@@# $:@@"X@2Pwith_modtypesubstᐠ(Asttypes#loc)Longident!t@@@@@@)Parsetree +module_type@@@@@GceHc@@FY@/Pwith_typesubst␠(Asttypes"#loc)Longident!!t@@@@@@)Parsetree#0type_declaration@@@@@kl@@jZ@.Pwith_modsubst㐠(Asttypes%#loc)Longident$!t@@@@@@(Asttypes'#loc)Longident&!t@@@@@@@@EGE|@@[@@@A@@@@@@@@@G@B@+module_exprC;@@)pmod_desc@@)Parsetree(0module_expr_desc@@@@@\@(pmod_loc@@(Location)!t@@@,@@]@/pmod_attributes@@)Parsetree**attributes@@@ -2 -N@@^@@@A@@@@@ mr@@@@H@B@0module_expr_descC;@@*Pmod_ident琠(Asttypes,#loc)Longident+!t@@@@@@ @@  @@_@.Pmod_structure萠)Parsetree-)structure@@@ @@ @@`@,Pmod_functor鐠)Parsetree.1functor_parameter@@@ )Parsetree/+module_expr@@@ @@#$%@@"a@*Pmod_applyꐠ)Parsetree0+module_expr@@@ )Parsetree1+module_expr@@@@@>LN?Lw@@=b@/Pmod_apply_unit될)Parsetree2+module_expr@@@@@PQ@@Oc@/Pmod_constraint쐠)Parsetree3+module_expr@@@)Parsetree4+module_type@@@@@kl@@jd@+Pmod_unpack퐠)Parsetree5*expression@@@@@}~@@|e@.Pmod_extension)Parsetree6)extension@@@@@131P@@f@@@A@@@@@ tt@@@@I@B@)structureC;@@ A8)Parsetree7.structure_item@@@@@@@@@@bbb@@@@J@B@.structure_itemC;@@)pstr_desc@@)Parsetree93structure_item_desc@@@@@g@(pstr_loc@@(Location:!t@@@@@h@@@A@@@@@@@@@K@B@3structure_item_descC;@@)Pstr_eval)Parsetree;*expression@@@)Parsetree<*attributes@@@@@  +@@i@*Pstr_value(Asttypes=(rec_flag@@@t?)Parsetree>-value_binding@@@ @@@"@@!8:!8g@@j@.Pstr_primitive)Parsetree@1value_description@@@#@@(()(@@'k@)Pstr_type(AsttypesA(rec_flag@@@$C)ParsetreeB0type_declaration@@@%@@@'@@I+)+J+)Z@@Hl@+Pstr_typext)ParsetreeD.type_extension@@@(@@[-\-@@Zm@.Pstr_exception)ParsetreeE.type_exception@@@)@@m.n.@@ln@+Pstr_module)ParsetreeF.module_binding@@@*@@11311R@@~o@.Pstr_recmoduleH)ParsetreeG.module_binding@@@+@@@-@@2km2k@@p@,Pstr_modtype)ParsetreeI7module_type_declaration@@@.@@44@@q@)Pstr_open)ParsetreeJ0open_declaration@@@/@@557@@r@*Pstr_class1L)ParsetreeK1class_declaration@@@0@@@2@@6IK6Iq@@s@/Pstr_class_typeIN)ParsetreeM6class_type_declaration@@@3@@@5@@88@@t@,Pstr_include)ParsetreeO3include_declaration@@@6@@::9@@u@.Pstr_attribute)ParsetreeP)attribute@@@7@@ ;OQ ;On@@ v@.Pstr_extension)ParsetreeQ)extension@@@8)ParsetreeR*attributes@@@9@@ *< +<@@ )w@@@A@@@@@ .@@@@ ,L@B@0value_constraintC;@@.Pvc_constraint8locally_abstract_univars@@U(AsttypesT#loc 'S@@@:@@@<@@@> T@ U@!@@ Sx@#typ@@)ParsetreeV)core_type@@@A dA"( eA"6@@ cy@@@ h? iB7<@@ gz@,Pvc_coercion&ground@@ H)ParsetreeW)core_type@@@D@@@F C=R C=j@@ {@(coercion@@)ParsetreeX)core_type@@@I C=k C=}@@ |@@@ C=? C=@@ }@@@A@@@@@ >@@@@ M@B@-value_bindingC;@@'pvb_pat@@)ParsetreeY'pattern@@@L P P@@ ~@(pvb_expr@@)ParsetreeZ*expression@@@O Q Q@@ @.pvb_constraint@@ )Parsetree[0value_constraint@@@R@@@T R R@@ @.pvb_attributes @@)Parsetree\*attributes@@@W S S@@ @'pvb_loc @@(Location]!t@@@Z T T@@ @@@A@@@@@ Nmm U@@@@ N@B@.module_bindingC;@@(pmb_name @@(Asttypes_#loc  ^@@@]@@@_@@@a!Ych!Yc@@!@(pmb_expr @@)Parsetree`+module_expr@@@d!)Z!*Z@@!(@.pmb_attributes @@)Parsetreea*attributes@@@g!9[!:[@@!8@'pmb_loc@@(Locationb!t@@@j!I\!J\@@!H@@@A@@@@@!MWHH!N]@@@@!LO@B@/toplevel_phraseD;@@(Ptop_def)Parsetreec)structure@@@@@!eenp!fen@@!d@(Ptop_dir)Parsetreed2toplevel_directive@@@@@!wf!xf@@!v@@@A@@@@@!{dWW@@@@!y@A@2toplevel_directiveD;@@)pdir_name@@(Asttypesf#loc!je@@@@@@!j!j@@!@(pdir_arg@@!q)Parsetreeg2directive_argument@@@ @@@ !k!k(@@!@(pdir_loc@@(Locationh!t@@@!l)-!l)B@@!@@@A@@@@@!h!mCF@@@@!@B@2directive_argumentD;@@*pdira_desc@@)Parsetreei7directive_argument_desc@@@!qei!qe@@!@)pdira_loc@@(Locationj!t@@@!r!r@@!@@@A@@@@@!oHH!s@@@@!@B@7directive_argument_descD;@@+Pdir_string!k@@@@@!v!v@@!@(Pdir_int!l@@@!!m@@@@@@@@"w"w @@"@*Pdir_ident)Longidentn!t@@@@@"*x  "+x (@@")@)Pdir_boolo@@@ @@"9y)+":y)>@@"8@@@A@@@@@"=u@@@@";@B@@3 (Abstract syntax tree produced by parsing@# (Warning:@ ' this module is unstable and part of -Compiler_libs@-compiler-libs@!.@@@@@@@@@@@@A"Z#2Parsetree.constant@@"m@@"l@"]@@"\@@A@@"R!@@#7Parsetree.constant_desc@@"M"L"F@@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@@@@@@@@@@@@"n"m@@32Character such as #'c'!.@@@@@@@@@@@@"o"n"i"a@@38Constant string such as *"constant". or <{delim|other constant|delim}!.@ J The location span the content of the string, without the delimiters.@@@@@@@@@@@@"h"g"b@@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"w@"j"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.@@@@@@@@@@@@@"@@"@"n@@"m@"`@@"_@@A@@"U@@#3Parsetree.extension39Extension points such as 8[%id ARG] and [%%id ARG]!.@ B Sub-language placeholder -- rejected by the typechecker.@@@@@@@@@@@@@@A"b@@#4Parsetree.attributes@@@A"D@!@#1Parsetree.payload@@"2"1@@@"$"#@@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!.@@@@@@@@@@@@"8"7"&@@36Ptyp_constr(lident, l), represents:'tconstr4 when $l=[]!,@)T tconstr2 when %l=[T]!,@5(T1, ..., Tn) tconstr& when 1l=[T1 ; ... ; Tn]!.@@@@@@@@@@@@@@"E"D"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@!.@@@@@@@@@@@@@@"b"a"P@@36Ptyp_class(tconstr, l), represents:(#tconstr4 when $l=[]!,@*T #tconstr2 when %l=[T]!,@6(T1, ..., Tn) #tconstr& when 1l=[T1 ; ... ; Tn]!.@@@@@@@@@@@@@@"o"n"f@@3'T as 'a!.@@@@@@@@@@@@"\"["M"E@@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@!.@@@@@@@@@@@@@@#M#L@@3*(module S)!.@@@@@@@@@@@@#H#G#6@@3%M.(T)@@@@@@@@@@@@#/#.@@3%[%id]!.@@@@@@@@@@@@@A@@g@#6Parsetree.package_type3#As  E@. typed values: "{ppt_path: S; ppt_constraints: []}, represents *(module S)!,@ ;{ppt_path: S; ppt_constraints: [(t1, T1) ; ... ; (tn, Tn)]}6 represents 0(module S with type t1 = T1 and ... and tn = Tn)!.@@@@@@@@@@@@@@@#P@@#O@#9@@#8@#@@# @#@@"@@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)@@@@@@@@@@@@@@#1#0@@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@@@@@@@@@@@@""@@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.@@@@@@@@@@@@"""@@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@@@@@@@@@@@@"ʑ"ɠ"@@34Ppat_unpack(s, ptyp), represents:.(module P : S)& when !s$ is (Some "P"% and $ptyp$ is (Some "S"@.(module _ : S)& when !s$ is $None% and $ptyp$ is (Some "S"@*(module P)& when !s$ is (Some "P"% and $ptyp$ is $None@*(module _)& when !s$ is $None% and $ptyp$ is $None@@@@@@@@@@@@@@##@@3(Pattern +exception P@@@@@@@@@@@@###@@@##@@3(Pattern %[%id]@@@@@@@@@@@@"""@@3(Pattern %M.(P)@@@@@@@@@@@@@A@@,@B@1Value expressions@@#4Parsetree.expression@@"@@"@"@@"@"@@"@"@@"Ð31... [@id1] [@id2]@@@@@@@@@@@@@A@@H@#9Parsetree.expression_desc@@""@@34Identifiers such as !x% and #M.x@@@@@@@@@@@@""@@3=Expressions constant such as !1", #'a'", &"true"", #1.0", "1l., "1L", "1n@@@@@@@@@@@@"Б"Ϡ"Ǡ"@@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@@@@@@@@@@@@#I#H#@@@3#E.l@@@@@@@@@@@@#0#/#'#@@3*E1.l <- E2@@@@@@@@@@@@##@@31[| E1; ...; En |]@@@@@@@@@@@@##""@@35if E1 then E2 else E3@@@@@@@@@@@@"䑠""@@3&E1; E2@@@@@@@@@@@@"ԑ"Ӡ"@@33while E1 do E2 done@@@@@@@@@@@@"đ"à""""@@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)@@@@@@@@@@@@""""@@37Pexp_coerce(E, from, T)+ represents((E :> T)+ when $from$ is $None!,@-(E : T0 :> T)& when $from$ is 'Some T0!.@@@@@@@@@@@@@@"Ǒ"Ơ"@@3%E # m@@@@@@@@@@@@""@@3'new M.c@@@@@@@@@@@@"""@@3&x <- 2@@@@@@@@@@@@""@@3;{< x1 = E1; ...; xn = En >}@@@@@@@@@@@@"_"^"V@@3+let SI in E@@@@@@@@@@@@"O"N@@3(assert E!.@2 Note: ,assert false < is treated in a special way by the type-checker.@@@@@@@@@@@@"T"S@@3&lazy E@@@@@@@@@@@@"L"K"C@@37Used for method bodies.@ @ Can only be used as the expression under  'Parsetree.class_field_kind.Cfk_concreteK,Cfk_concrete@ % for methods (not values).@@@@@@@@@@@@"F"E@@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@@ 2@#4Parsetree.binding_op@@!@@!@!@@!@!@@!@!@@!@@A@@ A@#=Parsetree.function_param_desc@@!!!y!l@@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@@ t@#8Parsetree.function_param@@"k@@"j@"]@@"\@@A@@ @#7Parsetree.function_body33See the comment on  'Parsetree.expression_desc.Pexp_functionK-Pexp_function@!.@@@@@@@@@@@@@"]"\@@@"O"N"@"8@@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@@ @#9Parsetree.type_constraint@@"A"@@@@"3"2"%@@33See the comment on  'Parsetree.expression_desc.Pexp_functionK-Pexp_function@!.@@@@@@@@@@@@@A@@ @B@2Value descriptions@@# 3/Values of type  E@, 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"]@@@@@@@@@@@@@@@"e@@"d@"Q@@"P@"C@@"B@"2@@"133... [@@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!.@@@@@@@@@@@@@@@#:@@#9@#&@@#%3.('a1,...'an) t@@@@@@@@@@@@"@@"3 ,... constraint T1=T1' ... constraint Tn=Tn'@@@@@@@@@@@@"@@"@"@@"ǐ3$for -= private ...@@@@@@@@@@@@"@@"3+represents #= T@@@@@@@@@@@@"@@"33... [@@id1] [@@id2]@@@@@@@@@@@@"@@"@@A@@@#3Parsetree.type_kind@@"@@@""@@@""@@39Invariant: non-empty list@@@@@@@@@@@@"x@@@"r"q@@@@A@@@# 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@!.@@@@@@@@@@@@@"@@"@"@@"@"@@"@"@@"@"y@@"x33l : T [@id1] [@id2]@@@@@@@@@@@@@A@@@# !Parsetree.constructor_declaration@@"n@@"m@"Z@@"Y@"@@@"?@"2@@"1@"@@"@"@@"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@@@#8Parsetree.type_extension3 EDefinition of new extensions constructors for the extensive sum type !t% (-type t += ...").@@@@@@@@@@@@@"[@@"Z@"D@@"C@"@@"@"@@!@!@@!@!@@!3$... %@@id1! %@@id2@@@@@@@@@@@@@A@@@#?Parsetree.extension_constructor@@!@@!@!@@!@!@@!@!@@!36C of ... [@id1] [@id2]@@@@@@@@@@@@@A@@@#8Parsetree.type_exception3?Definition of a new exception (+exception E").@@@@@@@@@@@@@!@@!@!@@!@!@@!33... [@@id1] [@@id2]@@@@@@@@@@@@@A@@@# $Parsetree.extension_constructor_kind@@!!!w!o@@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@@@#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@!.@@@@@@@@@@@@!!@@32constraint T1 = T2@@@@@@@@@@@@!p!o@@3'[@@@id]@@@@@@@@@@@@!h!g@@3&[%%id]@@@@@@@@@@@@@A@@N@#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.@@@@@@@@@@@@!}Y@!x@@!w@!j@@!i@!:@@!9@!&@@!%@!@@!@!@@!33... [@@id1] [@@id2]@@@@@@@@@@@@@A@@@#;Parsetree.class_description@@@A!@@# Parsetree.class_type_declaration@@@A @@B@ (Value expressions for the class language@@#4Parsetree.class_expr@@ @@ @ @@ @ @@ ǐ31... [@id1] [@id2]@@@@@@@@@@@@@A@@@#9Parsetree.class_expr_desc@@   @@3!c% and 1['a1, ..., 'an] c@@@@@@@@@@@@  @@3.object ... end@@@@@@@@@@@@     ~@@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@@ ˑ ʠ   @@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@@u@#;Parsetree.functor_parameter@@ Б@@3"()@@@@@@@@@@@@ Б Ϡ @@3/Named(name, MT), represents:((X : MT)& when $name$ is &Some X!,@((_ : MT)& when $name$ is $None@@@@@@@@@@@@@@@A@@@#3Parsetree.signature@@@A ݠ@@#8Parsetree.signature_item@@ @@ @ @@ @@A@@@#=Parsetree.signature_item_desc@@  @@3"- (val x: T=external x: T = "s1" ... "sn"@@@@@@@@@@@@@@   @@3 #type t1 = ... and ... and tn = ...@@@@@@@@@@@@  @@3 $type t1 := ... and ... and tn := ...@@@@@@@@@@@@  @@3.type t1 += ...@@@@@@@@@@@@  @@30exception C of T@@@@@@@@@@@@ y x@@3,module X = M% and -module X : MT@@@@@@@@@@@@ w v@@3-module X := M@@@@@@@@@@@@ o n@@3 (module rec X1 : MT1 and ... and Xn : MTn@@@@@@@@@@@@ a `@@32module type S = MT% and -module type S@@@@@@@@@@@@ _ ^@@35module type S := ...@@@@@@@@@@@@ W V@@3&open X@@@@@@@@@@@@ O N@@3*include MT@@@@@@@@@@@@ G F@@3 #class c1 : ... and ... and cn : ...@@@@@@@@@@@@ 9 8@@3 *class type ct1 = ... and ... and ctn = ...@@@@@@@@@@@@ + *@@3'[@@@id]@@@@@@@@@@@@ # " @@3&[%%id]@@@@@@@@@@@@@A@@@# ME@@@@@@@@@@@@~v@@3(ME1(ME2)@@@@@@@@@@@@on@@3%ME1()@@@@@@@@@@@@gf^@@3)(ME : MT)@@@@@@@@@@@@WV@@3'(val E)@@@@@@@@@@@@ON@@3%[%id]@@@@@@@@@@@@@A@@@#3Parsetree.structure@@@AG@@#8Parsetree.structure_item@@5@@4@'@@&@@A@@@#=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@@@@@@@@@@@@@@3'[@@@id]@@@@@@@@@@@@@@3&[%%id]@@@@@@@@@@@@@A@@@#:Parsetree.value_constraint@@@@@@@@@@@us@@r@`@@_@@@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@@@@@@@@@@@@@@@@|@@{@n@@m@[@@Z@M@@L@@A@@@#8Parsetree.module_binding3/Values of type .module_binding, represents -module X = ME@@@@@@@@@@@@@K@@J@2@@1@$@@#@@@@@A@@ @A@(Toplevel@@B@0Toplevel phrases@@#9Parsetree.toplevel_phrase@@@@@@@3$#use", %#load$ ...@@@@@@@@@@@@@A@@ J@@#@@A)Longident(Location(Asttypes@@@@@