U>055.4.0+dev8-2025-09-09/)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@(Asttypes0#loc/@@@ @@@ ɠ@)Parsetree1'payload@@@ @@ @@@@ B l l B l @@@@J@B@*attributesC;@@A3)Parsetree2)attribute@@@ @@@ @@@@!H  "H  6@@@@ K@B@'payloadC;@@$PStrՐ)Parsetree4)structure@@@ @@9K F H:K F [@@8S@$PSig֐)Parsetree5)signature@@@ @@KL \ ^LL \ q@@JT@$PTypא)Parsetree6)core_type@@@ @@]M  ^M  @@\U@$PPatؐ)Parsetree7'pattern@@@ ҠC)Parsetree8*expression@@@ @@@ @@}N  ~N  @@|V@@@A@@@@@J 8 8@@@@L@B@)core_typeC;@@)ptyp_desc@@)Parsetree9.core_type_desc@@@ ְV  V  @@W@(ptyp_loc@@(Location:!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_tupleC@A@@@ @@@ 蠠@)ParsetreeB)core_type@@@ @@ @@@ @@4h5h@@3^@+Ptyp_constrᐠ(AsttypesE#loc)LongidentD!t@@@ (@@@ *G)ParsetreeF)core_type@@@ +@@@ -@@^sKM_sK~@@]_@+Ptyp_object萠I)ParsetreeH,object_field@@@ .@@@ 0(AsttypesJ+closed_flag@@@ 1@@yacya@@~`@*Ptyp_class鐠(AsttypesL#loc)LongidentK!t@@@ 2@@@ 4N)ParsetreeM)core_type@@@ 5@@@ 7@@'@@a@*Ptyp_aliasꐠ)ParsetreeO)core_type@@@ 8(AsttypesQ#locP@@@ 9@@@ ;@@  5@@b@,Ptyp_variant될@S)ParsetreeR)row_field@@@ <@@@ >(AsttypesT+closed_flag@@@ ?\V(AsttypesU%label@@@ @@@@ B@@@ D@@IKI@@c@)Ptyp_poly쐠uY(AsttypesX#locW@@@ E@@@ G@@@ I)ParsetreeZ)core_type@@@ J@@&RT'R~@@%d@,Ptyp_package퐠)Parsetree[,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@@(Asttypesa#loc)Longident`!t@@@ Q@@@ S@@h@)ppt_cstrs@@e@(Asttypesc#loc)Longidentb!t@@@ V@@@ X@)Parsetreed)core_type@@@ Y@@ Z@@@ \2@@i@'ppt_loc@@(Locationf!t@@@ _383L@@j@)ppt_attrs@@)Parsetreeg*attributes@@@ bMRMh@@k@@@A@@@@@in@@@@O@B@)row_fieldC;@@(prf_desc@@)Parsetreeh.row_field_desc@@@ h@@l@'prf_loc@@(Locationi!t@@@ k@@m@.prf_attributes@@)Parsetreej*attributes@@@ n@@n@@@A@@@@@nn@@@@P@B@.row_field_descC;@@$Rtag(Asttypesl#loc(Asttypesk%label@@@ q@@@ s$boolm@@@ to)Parsetreen)core_type@@@ u@@@ w@@RS@@Qo@(Rinherit)Parsetreep)core_type@@@ x@@d W Ye W p@@cp@@@A@@@@@h@@@@fQ@B@,object_fieldC;@@(pof_desc@@)Parsetreeq1object_field_desc@@@ y}  ~  @@|q@'pof_loc@@(Locationr!t@@@ |    @@r@.pof_attributes@@)Parsetrees*attributes@@@     @@s@@@A@@@@@    @@@@R@B@1object_field_descC;@@$Otag(Asttypesu#loc(Asttypest%label@@@ @@@ )Parsetreev)core_type@@@ @@! ! ! !,@@t@(Oinherit)Parsetreew)core_type@@@ @@!-!/!-!F@@u@@@A@@@@@  @@@@S@B@'patternC;@@)ppat_desc@@)Parsetreex,pattern_desc@@@ !q!v!q!@@v@(ppat_loc@@(Locationy!t@@@ !!!!@@w@.ppat_loc_stack@@)Parsetreez.location_stack@@@ !!!!@@x@/ppat_attributes@@)Parsetree{*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@.Pexp_letmodule1(Asttypes#loc  "@@@ M@@@ O@@@ Q)Parsetree+module_expr@@@ R)Parsetree*expression@@@ S@@ a@@ b@A;@@ `@1Pexp_letexception2)Parsetree5extension_constructor@@@ T)Parsetree*expression@@@ U@@ |AbAd }AbA@@ {@+Pexp_assert3)Parsetree*expression@@@ V@@ AA AA@@ @)Pexp_lazy4)Parsetree*expression@@@ W@@ BVBX BVBq@@ @)Pexp_poly5)Parsetree*expression@@@ X )Parsetree)core_type@@@ Y@@@ [@@ BB BB@@ @+Pexp_object6)Parsetree/class_structure@@@ \@@ CmCo CmC@@ @,Pexp_newtype7(Asttypes#loc @@@ ]@@@ _)Parsetree*expression@@@ `@@ CC CC@@ @)Pexp_pack8)Parsetree+module_expr@@@ a ٠)Parsetree,package_type@@@ b@@@ d@@ CC CD#@@ @)Pexp_open9)Parsetree0open_declaration@@@ e)Parsetree*expression@@@ f@@ .DUDW /DUD@@ -@*Pexp_letop:)Parsetree%letop@@@ g@@ @DD ADD@@ ?@.Pexp_extension;)Parsetree)extension@@@ h@@ REIEK SEIEh@@ Q@0Pexp_unreachable<@@ [EyE{ \EyE@@ Z@@@A@@@@@ _:..@@@@ ]W@B@$caseC;@@&pc_lhs=@@)Parsetree'pattern@@@ i tEE uEE@@ s@(pc_guard>@@ O)Parsetree*expression@@@ l@@@ n EE EE@@ @&pc_rhs?@@)Parsetree *expression@@@ q EE EE@@ @@@A@@@@@ EE EF@@@@ X@B@%letopC;@@$let_@@@)Parsetree *binding_op@@@ t F]Fa F]Fs@@ @$andsA@@ ' )Parsetree *binding_op@@@ w@@@ y FtFx FtF@@ @$bodyB@@)Parsetree *expression@@@ | FF FF@@ @@@A@@@@@ FMFM FF@@@@ Y@B@*binding_opC;@@'pbop_opC@@(Asttypes#loc @@@ @@@  FF FF@@ @(pbop_patD@@)Parsetree'pattern@@@  FF FF@@ @(pbop_expE@@)Parsetree*expression@@@  FF FG @@ @(pbop_locF@@(Location!t@@@  )GG *GG(@@ (@@@A@@@@@ -FF .G)G,@@@@ ,Z@B@3function_param_descC;@@*Pparam_valG(Asttypes)arg_label@@@  )Parsetree*expression@@@ @@@ )Parsetree'pattern@@@ @@ \GHGJ ]GHG@@ [@.Pparam_newtypeH(Asttypes#loc H@@@ @@@ @@ tII uIJ@@ s@@@A@@@@@ xG.G.@@@@ v[@B@.function_paramC;@@*pparam_locI@@(Location!t@@@  MsMw MsM@@ @+pparam_descJ@@)Parsetree3function_param_desc@@@  MM MM@@ @@@A@@@@@ M^M^ MM@@@@ \@B@-function_bodyC;@@.Pfunction_bodyK)Parsetree*expression@@@ @@ MM MM@@ @/Pfunction_casesL /)Parsetree$case@@@ @@@ (Location!t@@@ )Parsetree*attributes@@@ @@ MM MN+@@ @@@A@@@@@ MM@@@@ ]@B@/type_constraintC;@@+PconstraintM)Parsetree)core_type@@@ @@  OO  OO@@ @'PcoerceN ۠)Parsetree )core_type@@@ @@@ )Parsetree!)core_type@@@ @@ OO OO@@@@@A@@@@@" OO@@@@ ^@B@1value_descriptionC;@@)pval_nameO@@(Asttypes##loc"@@@ @@@ =PqPv>PqP@@<@)pval_typeP@@)Parsetree$)core_type@@@ MPPNPP@@L@)pval_primQ@@ &4%@@@ @@@ `PPaPP@@_@/pval_attributesR@@)Parsetree'*attributes@@@ pPPqPP@@o@(pval_locS@@(Location(!t@@@ Q QQ Q#@@@@@A@@@@@PSPSQ$Q)@@@@_@B@0type_declarationC;@@*ptype_nameT@@(Asttypes*#loct)@@@ @@@ ð$RkRp$RkR@@@,ptype_paramsU@@.@)Parsetree+)core_type@@@ Ơ@@(Asttypes,(variance@@@ Ǡ@(Asttypes-+injectivity@@@ @@ @@ @@@ ̰%RR%RR@@@+ptype_cstrsV@@F2@)Parsetree/)core_type@@@ Ϡ@)Parsetree0)core_type@@@ Р@(Location1!t@@@ @@ @@@ ԰'RR'RS"@@@*ptype_kindW@@)Parsetree3)type_kind@@@ װ)S_Sd)S_Sz@@@-ptype_privateX@@(Asttypes4,private_flag@@@ ڰ *S{S!*S{S@@@.ptype_manifestY@@)Parsetree5)core_type@@@ @@@ ߰5+SS6+SS@@4@0ptype_attributesZ@@)Parsetree6*attributes@@@ E,SSF,ST@@D@)ptype_loc[@@(Location7!t@@@ U-T>TCV-T>TY@@T@@@A@@@@@Y"RNRNZ.TZT_@@@@X`@B@)type_kindC;@@.Ptype_abstract\@@hJY!Y#iJY!Y3@@g@-Ptype_variant]9)Parsetree87constructor_declaration@@@ @@@ @@KY4Y6KY4Ye@@@,Ptype_record^;)Parsetree:1label_declaration@@@ @@@ @@LYfYhLYfY@@@*Ptype_open_@@MYYMYY@@@@@A@@@@@IYY@@@@a@B@1label_declarationC;@@(pld_name`@@(Asttypes=#loc<@@@ @@@ QYYQYY@@@+pld_mutablea@@(Asttypes>,mutable_flag@@@ RYZRYZ@@@(pld_typeb@@)Parsetree?)core_type@@@ SZZ!SZZ5@@@'pld_locc@@(Location@!t@@@ TZ6Z;TZ6ZO@@@.pld_attributesd@@)ParsetreeA*attributes@@@ UZPZUUZPZp@@@@@A@@@@@OYYVZZ@@@@b@B@7constructor_declarationC;@@(pcd_namee@@(AsttypesC#locB@@@ @@@  d\~\!d\~\@@@(pcd_varsf@@F(AsttypesE#locD@@@ @@@ @@@ <e\\=e\\@@;@(pcd_argsg@@)ParsetreeG5constructor_arguments@@@ Lf\\Mf\\@@K@'pcd_resh@@')ParsetreeH)core_type@@@ @@@ ag\\bg\\@@`@'pcd_loci@@(LocationI!t@@@ qh\]rh\]@@p@.pcd_attributesj@@)ParsetreeJ*attributes@@@ i]]i]]9@@@@@A@@@@@b\Z\Zj]]]b@@@@c@B@5constructor_argumentsC;@@+Pcstr_tuplekL)ParsetreeK)core_type@@@ "@@@ $@@m]]m]]@@@,Pcstr_recordlN)ParsetreeM1label_declaration@@@ %@@@ '@@n]]n]]@@@@@A@@@@@l]d]d@@@@d@B@.type_extensionC;@@+ptyext_pathm@@(AsttypesP#loc)LongidentO!t@@@ (@@@ *````@@@-ptyext_paramsn@@QT@)ParsetreeQ)core_type@@@ -@@(AsttypesR(variance@@@ .@(AsttypesS+injectivity@@@ /@@ 0@@ 1@@@ 3````@@@3ptyext_constructorso@@V)ParsetreeU5extension_constructor@@@ 6@@@ 8%``&`a&@@$@.ptyext_privatep@@(AsttypesW,private_flag@@@ ;5a'a,6a'aI@@4@*ptyext_locq@@(LocationX!t@@@ >EaJaOFaJaf@@D@1ptyext_attributesr@@)ParsetreeY*attributes@@@ AUagalVaga@@T@@@A@@@@@Y}`r`rZaa@@@@Xe@B@5extension_constructorC;@@)pext_names@@(Asttypes[#locIZ@@@ G@@@ Iub=bBvb=bX@@t@)pext_kindt@@)Parsetree\:extension_constructor_kind@@@ LbYb^bYb@@@(pext_locu@@(Location]!t@@@ Obbbb@@@/pext_attributesv@@)Parsetree^*attributes@@@ Rbbbb@@@@@A@@@@@bbbb@@@@f@B@.type_exceptionC;@@2ptyexn_constructorw@@)Parsetree_5extension_constructor@@@ Xcccc3@@@*ptyexn_locx@@(Location`!t@@@ [c4c8c4cP@@@1ptyexn_attributesy@@)Parsetreea*attributes@@@ ^cQcUcQct@@@@@A@@@@@bbcc@@@@g@B@:extension_constructor_kindC;@@)Pext_declz_d(Asttypesc#locb@@@ a@@@ c@@@ e)Parsetreee5constructor_arguments@@@ f)Parsetreef)core_type@@@ g@@@ i@@cccd>@@@+Pext_rebind{(Asttypesh#loc)Longidentg!t@@@ j@@@ l@@9gg:gg@@8@@@A@@@@@=cc@@@@;h@B@*class_typeC;@@)pcty_desc|@@)Parsetreei/class_type_desc@@@ mRhhhmShhh@@Q@(pcty_loc}@@(Locationj!t@@@ pbhhchh@@a@/pcty_attributes~@@)Parsetreek*attributes@@@ srhhshh@@q@@@A@@@@@vhQhQwhh@@@@ui@B@/class_type_descC;@@+Pcty_constr(Asttypesm#loc)Longidentl!t@@@ v@@@ xo)Parsetreen)core_type@@@ y@@@ {@@iiii4@@@.Pcty_signature)Parsetreep/class_signature@@@ |@@ijiliji@@@*Pcty_arrow(Asttypesq)arg_label@@@ })Parsetreer)core_type@@@ ~)Parsetrees*class_type@@@ @@iiii@@@.Pcty_extension)Parsetreet)extension@@@ @@kVkXkVku@@@)Pcty_open)Parsetreeu0open_description@@@ )Parsetreev*class_type@@@ @@ kk kk@@@@@A@@@@@ hh@@@@ j@B@/class_signatureC;@@*pcsig_self@@)Parsetreew)core_type@@@ "kk#kl@@!@,pcsig_fields@@y)Parsetreex0class_type_field@@@ @@@ 8ll 9ll0@@7@@@A@@@@@<kk=l1l6@@@@;k@B@0class_type_fieldC;@@)pctf_desc@@)Parsetreez5class_type_field_desc@@@ Rm5m:Sm5m[@@Q@(pctf_loc@@(Location{!t@@@ bm\macm\mv@@a@/pctf_attributes@@)Parsetree|*attributes@@@ rmwm|smwm@@q@@@A@@@@@vmmwmm@@@@ul@B@5class_type_field_descC;@@,Pctf_inherit)Parsetree}*class_type@@@ @@mmmm@@@(Pctf_val@(Asttypes#loc(Asttypes~%label@@@ @@@ @(Asttypes,mutable_flag@@@ @(Asttypes,virtual_flag@@@ @)Parsetree)core_type@@@ @@ @@nnnnW@@@+Pctf_method@(Asttypes#loc(Asttypes%label@@@ @@@ @(Asttypes,private_flag@@@ @(Asttypes,virtual_flag@@@ @)Parsetree)core_type@@@ @@ @@npnr npn@@@/Pctf_constraint@)Parsetree)core_type@@@ @)Parsetree)core_type@@@ @@ @@(o&o()o&oT@@'@.Pctf_attribute)Parsetree)attribute@@@ @@:orot;oro@@9@.Pctf_extension)Parsetree)extension@@@ @@LooMoo@@K@@@A@@@@@Pmm@@@@Nm@B@+class_infosC;!a@ @A(pci_virt@@(Asttypes,virtual_flag@@@ jookop@@i@*pci_params@@@)Parsetree)core_type@@@ @@(Asttypes(variance@@@ @(Asttypes+injectivity@@@ @@ @@ @@@ ppppN@@@(pci_name@@(Asttypes#loc@@@ @@@ pOpTpOpi@@ @(pci_expr@@cD@ pjpopjp|@@ @'pci_loc@@(Location!t@@@ p}pp}p@@ @.pci_attributes@@)Parsetree*attributes@@@ pppp@@ @@@A@Y@@@@@oopp@@@@n@B@1class_descriptionC;@@YA)Parsetree+class_infos)Parsetree*class_type@@@ @@@ @@@@qqqq@@@@o@B@6class_type_declarationC;@@tA)Parsetree+class_infos)Parsetree*class_type@@@ @@@ @@@@qqqr @@@@p@B@*class_exprC;@@(pcl_desc@@)Parsetree/class_expr_desc@@@ ʰ.rZr_/rZry@@- @'pcl_loc@@(Location!t@@@ Ͱ>rzr?rzr@@=@.pcl_attributes@@)Parsetree*attributes@@@ аNrrOrr@@M@@@A@@@@@RrCrCS rr@@@@Qq@B@/class_expr_descC;@@*Pcl_constr(Asttypes#loc)Longident!t@@@ @@@ ՠ)Parsetree)core_type@@@ @@@ @@ rr rs"@@@-Pcl_structure)Parsetree/class_structure@@@ @@sLsNsLsp@@@'Pcl_fun(Asttypes)arg_label@@@ ڠz)Parsetree*expression@@@ @@@ ݠ)Parsetree'pattern@@@ ޠ)Parsetree*class_expr@@@ @@ssss@@@)Pcl_apply)Parsetree*class_expr@@@ E@(Asttypes)arg_label@@@ ᠠ@)Parsetree*expression@@@ @@ @@@ @@v~vv~v@@@'Pcl_let(Asttypes(rec_flag@@@ t)Parsetree-value_binding@@@ @@@ )Parsetree*class_expr@@@ @@&ww &ww@@@.Pcl_constraint)Parsetree*class_expr@@@ )Parsetree*class_type@@@ @@:-yGyI;-yGyt@@9@-Pcl_extension)Parsetree)extension@@@ @@L.yyM.yy@@K@(Pcl_open)Parsetree0open_description@@@ )Parsetree*class_expr@@@ @@g/yyh/yy@@f@@@A@@@@@k rr@@@@ir@B@/class_structureC;@@*pcstr_self@@)Parsetree'pattern@@@ 3zz#3zz7@@@,pcstr_fields@@)Parsetree+class_field@@@ @@@ 4z8z=4z8z\@@@@@A@@@@@1zz5z]zb@@@@s@B@+class_fieldC;@@(pcf_desc@@)Parsetree0class_field_desc@@@ >{Z{_>{Z{z@@@'pcf_loc@@(Location!t@@@ ?{{{?{{{@@@.pcf_attributes@@)Parsetree*attributes@@@ @{{@{{@@@@@A@@@@@<{B{BA{{@@@@t@B@0class_field_descC;@@+Pcf_inherit(Asttypes-override_flag@@@)Parsetree*class_expr@@@ɠ(Asttypes#loc@@@@@@@@@@@ D{{ D{|7@@@'Pcf_val@(Asttypes#loc(Asttypes%label@@@@@@ @(Asttypes,mutable_flag@@@ @)Parsetree0class_field_kind@@@ @@ @@<S~~=S~~@@;@*Pcf_method@(Asttypes#loc(Asttypes%label@@@@@@@(Asttypes,private_flag@@@@)Parsetree0class_field_kind@@@@@@@obpb6@@n@.Pcf_constraint@)Parsetree)core_type@@@@)Parsetree)core_type@@@@@@@hhI@@ @/Pcf_initializer)Parsetree*expression@@@@@igiig@@!@-Pcf_attribute)Parsetree)attribute@@@@@jj@@"@-Pcf_extension)Parsetree)extension@@@@@kk@@#@@@A@@@@@C{{@@@@u@B@0class_field_kindC;@@+Cfk_virtual)Parsetree)core_type@@@@@nn9@@$@,Cfk_concrete(Asttypes-override_flag@@@)Parsetree*expression@@@@@o:<o:h@@%@@@A@@@@@m@@@@v@B@1class_declarationC;@@uA)Parsetree+class_infos)Parsetree*class_expr@@@@@@@@@@qjjqj@@@@w@B@+module_typeC;@@)pmty_desc@@)Parsetree0module_type_desc@@@ /x0x#@@.&@(pmty_loc@@(Location!t@@@#?y$)@y$>@@>'@/pmty_attributes@@)Parsetree*attributes@@@&Oz?DPz?`@@N(@@@A@@@@@SvT{@@@@Rx@B@0module_type_descC;@@*Pmty_ident(Asttypes#loc)Longident!t@@@)@@@+@@t~u~@@s)@.Pmty_signature)Parsetree)signature@@@,@@@@*@,Pmty_functor)Parsetree1functor_parameter@@@-)Parsetree+module_type@@@.@@O@@+@)Pmty_with)Parsetree+module_type@@@/ ؠ)Parsetree/with_constraint@@@0@@@2@@wyw@@,@+Pmty_typeof)Parsetree+module_expr@@@3@@@@-@.Pmty_extension)Parsetree)extension@@@4@@@@.@*Pmty_alias(Asttypes#loc)Longident!t@@@5@@@7@@,.,M@@/@@@A@@@@@}@@@@y@B@1functor_parameterC;@@$Unit@@|~|@@0@%Named(Asttypes#loc@@@8@@@:@@@<)Parsetree+module_type@@@=@@9:@@81@@@A@@@@@=dd@@@@;z@B@)signatureC;@@A)Parsetree.signature_item@@@>@@@@@@@@TLLULo@@@@S{@B@.signature_itemC;@@)psig_desc@@)Parsetree3signature_item_desc@@@Ajk@@i2@(psig_loc@@(Location!t@@@Dz{@@y3@@@A@@@@@~qq@@@@}|@B@3signature_item_descC;@@*Psig_value)Parsetree1value_description@@@G@@@@4@)Psig_type(Asttypes(rec_flag@@@H)Parsetree0type_declaration@@@I@@@K@@bdb@@5@.Psig_typesubst-)Parsetree0type_declaration@@@L@@@N@@@@6@+Psig_typext)Parsetree.type_extension@@@O@@(*(I@@7@.Psig_exception)Parsetree.type_exception@@@P@@cec@@8@+Psig_module)Parsetree2module_declaration@@@Q@@@@9@-Psig_modsubst)Parsetree3module_substitution@@@R@@@@:@.Psig_recmoduleÐ)Parsetree2module_declaration@@@S@@@U@@/5705b@@.;@,Psig_modtypeĐ)Parsetree7module_type_declaration@@@V@@AB@@@<@1Psig_modtypesubstŐ)Parsetree7module_type_declaration@@@W@@ST-@@R=@)Psig_openƐ)Parsetree0open_description@@@X@@eTVfTu@@d>@,Psig_includeǐ)Parsetree3include_description@@@Y@@wx@@v?@*Psig_classȐ)Parsetree1class_description@@@Z@@@\@@@@@@/Psig_class_typeɐ)Parsetree6class_type_declaration@@@]@@@_@@ " R@@A@.Psig_attributeʐ)Parsetree)attribute@@@`@@@@B@.Psig_extensionː)Parsetree)extension@@@a)Parsetree*attributes@@@b@@@@C@@@A@@@@@@@@@}@B@2module_declarationC;@@(pmd_name@@(Asttypes#loc@@@c@@@e@@@g % A@@D@(pmd_type@@)Parsetree+module_type@@@jBG B]@@E@.pmd_attributes@@)Parsetree*attributes@@@m^c^~@@F@'pmd_loc@@(Location!t@@@p()@@'G@@@A@@@@@,-@@@@+~@B@3module_substitutionC;@@(pms_name@@(Asttypes#loc@@@v@@@xH!&I!;@@GH@,pms_manifest@@(Asttypes#loc)Longident!t@@@{@@@}a<Ab<_@@`I@.pms_attributes@@)Parsetree*attributes@@@q`er`@@pJ@'pms_loc@@(Location!t@@@@@K@@@A@@@@@@@@@@B@7module_type_declarationC;@@)pmtd_name@@(Asttypes#locu@@@@@@(-(C@@L@)pmtd_type@@|)Parsetree+module_type@@@@@@DIDg@@M@/pmtd_attributes@@)Parsetree *attributes@@@hmh@@N@(pmtd_loc@@(Location !t@@@@@O@@@A@@@@@@@@@@@B@*open_infosC;!a@@A*popen_expr@@ D@@@P@.popen_override@@(Asttypes -override_flag@@@@@Q@)popen_loc@@(Location !t@@@@@R@0popen_attributes@@)Parsetree *attributes@@@  @@S@@@A@Y@@@@@%&!&@@@@$A@B@0open_descriptionC;@@A)Parsetree*open_infos(Asttypes#loc)Longident!t@@@@@@@@@@@@@IJ@@@@HB@B@0open_declarationC;@@A)Parsetree*open_infos)Parsetree+module_expr@@@@@@@@@@d((e(U@@@@cC@B@-include_infosC;!a@@A)pincl_mod@@ D@yz@@xT@)pincl_loc@@(Location!t@@@@@U@0pincl_attributes@@)Parsetree*attributes@@@<@@V@@@A@Y@@@@@=B@@@@D@B@3include_descriptionC;@@A)Parsetree-include_infos)Parsetree+module_type@@@@@@@@@@DDDw@@@@E@B@3include_declarationC;@@1A)Parsetree-include_infos)Parsetree+module_expr@@@@@@@@@@@@@@F@B@/with_constraintC;@@*Pwith_typeߐ(Asttypes#loc)Longident!t@@@@@@Š)Parsetree0type_declaration@@@@@LNL@@W@,Pwith_module(Asttypes#loc)Longident!t@@@@@@ɠ(Asttypes#loc)Longident!t@@@@@@@@,-I@@+X@-Pwith_modtypeᐠ(Asttypes!#loc)Longident !t@@@@@@Ϡ)Parsetree"+module_type@@@@@PmoQm@@OY@2Pwith_modtypesubst␠(Asttypes$#loc)Longident#!t@@@@@@Ӡ)Parsetree%+module_type@@@@@tu@@sZ@/Pwith_typesubst㐠(Asttypes'#loc)Longident&!t@@@@@@נ)Parsetree(0type_declaration@@@@@/1/h@@[@.Pwith_modsubst䐠(Asttypes*#loc)Longident)!t@@@@@@۠(Asttypes,#loc)Longident+!t@@@@@@@@@@\@@@A@@@@@66@@@@G@B@+module_exprC;@@)pmod_desc@@)Parsetree-0module_expr_desc@@@߰ UZ Uv@@]@(pmod_loc@@(Location.!t@@@w|w@@^@/pmod_attributes@@)Parsetree/*attributes@@@@@_@@@A@@@@@ ==@@@@H@B@0module_expr_descC;@@*Pmod_ident萠(Asttypes1#loc)Longident0!t@@@@@@@@#$@@"`@.Pmod_structure鐠)Parsetree2)structure@@@@@5 6=@@4a@,Pmod_functorꐠ)Parsetree31functor_parameter@@@)Parsetree4+module_expr@@@@@PWYQW@@Ob@*Pmod_apply될)Parsetree5+module_expr@@@)Parsetree6+module_expr@@@@@kl@@jc@/Pmod_apply_unit쐠)Parsetree7+module_expr@@@@@}~@@|d@/Pmod_constraint퐠)Parsetree8+module_expr@@@)Parsetree9+module_type@@@@@!#!Q@@e@+Pmod_unpack)Parsetree:*expression@@@@@fhf@@f@.Pmod_extension)Parsetree;)extension@@@@@@@g@@@A@@@@@@@@@I@B@)structureC;@@6A5=)Parsetree<.structure_item@@@@@@@@@@@@@@J@B@.structure_itemC;@@)pstr_desc@@)Parsetree>3structure_item_desc@@@! !+@@h@(pstr_loc@@(Location?!t@@@",1",F@@i@@@A@@@@@#GL@@@@K@B@3structure_item_descC;@@)Pstr_eval)Parsetree@*expression@@@)ParsetreeA*attributes@@@@@"&hj#&h@@!j@*Pstr_value(AsttypesB(rec_flag@@@D)ParsetreeC-value_binding@@@@@@@@C'D'@@Bk@.Pstr_primitive)ParsetreeE1value_description@@@@@U. V.E@@Tl@)Pstr_type(AsttypesF(rec_flag@@@H)ParsetreeG0type_declaration@@@@@@@@v1w1@@um@+Pstr_typext)ParsetreeI.type_extension@@@ @@33@@n@.Pstr_exception)ParsetreeJ.type_exception@@@ @@4-/4-Q@@o@+Pstr_module)ParsetreeK.module_binding@@@ @@77@@p@.Pstr_recmodule"M)ParsetreeL.module_binding@@@ @@@@@88@@q@,Pstr_modtype)ParsetreeN7module_type_declaration@@@@@:24:2]@@r@)Pstr_open)ParsetreeO0open_declaration@@@@@;{};{@@s@*Pstr_class^Q)ParsetreeP1class_declaration@@@@@@@@ < <@@t@/Pstr_class_typevS)ParsetreeR6class_type_declaration@@@@@@@@ >   > <@@ u@,Pstr_include)ParsetreeT3include_declaration@@@@@ *@wy +@w@@ )v@.Pstr_attribute)ParsetreeU)attribute@@@@@ <A =A@@ ;w@.Pstr_extension)ParsetreeV)extension@@@)ParsetreeW*attributes@@@@@ WB XB@@ Vx@@@A@@@@@ [%NN@@@@ YL@B@0value_constraintC;@@.Pvc_constraint8locally_abstract_univars@@Z(AsttypesY#loc TX@@@@@@@@@ FW] FW@@ y@#typ@@)Parsetree[)core_type@@@" G G@@ z@@@ E?A H@@ {@,Pvc_coercion&ground@@ u)Parsetree\)core_type@@@%@@@' I I@@ |@(coercion@@)Parsetree])core_type@@@* I I@@ }@@@ I I@@ ~@@@A@@@@@ D((@@@@ M@B@-value_bindingC;@@'pvb_pat@@)Parsetree^'pattern@@@- V V@@ @(pvb_expr@@)Parsetree_*expression@@@0 W W@@ @.pvb_constraint @@ Ǡ)Parsetree`0value_constraint@@@3@@@5!X!XF@@!@.pvb_attributes @@)Parsetreea*attributes@@@8!YGK!YGf@@!@'pvb_loc @@(Locationb!t@@@;!!Zgk!"Zg@@! @@@A@@@@@!%T!&[@@@@!$N@B@.module_bindingC;@@(pmb_name @@(Asttypesd#loc!!c@@@>@@@@@@@B!F_!G_@@!E@(pmb_expr @@)Parsetreee+module_expr@@@E!V`!W`@@!U@.pmb_attributes@@)Parsetreef*attributes@@@H!fa !ga&@@!e@'pmb_loc@@(Locationg!t@@@K!vb',!wb'@@@!u@@@A@@@@@!z]!{cAF@@@@!yO@B@/toplevel_phraseD;@@(Ptop_def)Parsetreeh)structure@@@@@!k!k@@!@(Ptop_dir)Parsetreei2toplevel_directive@@@@@!l!l@@!@@@A@@@@@!j@@@@!@A@2toplevel_directiveD;@@)pdir_name@@(Asttypesk#loc!j@@@@@@!pJN!pJd@@!@(pdir_arg@@!)Parsetreel2directive_argument@@@@@@!qei!qe@@!@(pdir_loc@@(Locationm!t@@@!r!r@@!@@@A@@@@@!n--!s@@@@!@B@2directive_argumentD;@@*pdira_desc@@)Parsetreen7directive_argument_desc@@@"w"w@@"@)pdira_loc@@(Locationo!t@@@ "x"x @@"@@@A@@@@@"u"y@@@@"@B@7directive_argument_descD;@@+Pdir_string"p@@@ @@"+|13",|1J@@"*@(Pdir_int"q@@@"" r@@@@@@@@"E}KM"F}Ko@@"D@*Pdir_ident)Longidents!t@@@@@"W~pr"X~p@@"V@)Pdir_bool$t@@@@@"f"g@@"e@@@A@@@@@"j{@@@@"h@B@@3 (Abstract syntax tree produced by parsing@# (Warning:@ ' this module is unstable and part of -Compiler_libs@-compiler-libs@!.@@@@@@@@@@@@A"#2Parsetree.constant@@"@@"@"@@"@@A@@""@@#7Parsetree.constant_desc@@"z"y"s@@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'!.@@@@@@@@@@@@""""@@38Constant string such as *"constant". or <{delim|other constant|delim}!.@ J The location span the content of the string, without the delimiters.@@@@@@@@@@@@"""@@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"@""@@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.@@@@@@@@@@@@@"@@"@"@@"@"@@"@@A@@"@@#3Parsetree.extension39Extension points such as 8[%id ARG] and [%%id ARG]!.@ B Sub-language placeholder -- rejected by the typechecker.@@@@@@@@@@@@@@A"@@#4Parsetree.attributes@@@A"q@!@#1Parsetree.payload@@"_"^@@@"Q"P@@3%: SIG & in an attribute or an extension point@@@@@@@@@@@@"L"K@@3#: T & in an attribute or an extension point@@@@@@@@@@@@"G"F">@@3#? P& or *? P when E ', in an attribute or an extension point@@@@@@@@@@@@@A@@Z@A@-Core language@@B@0Type expressions@@#3Parsetree.core_type@@"G@@"F@"9@@"8@"+@@"*@"@@"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@!.@@@@@@@@@@@@@@"B"A@@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!.@@@@@@@@@@@@"e"d"S@@36Ptyp_constr(lident, l), represents:'tconstr4 when $l=[]!,@)T tconstr2 when %l=[T]!,@5(T1, ..., Tn) tconstr& when 1l=[T1 ; ... ; Tn]!.@@@@@@@@@@@@@@"r"q"c@@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@!.@@@@@@@@@@@@@@"""}@@36Ptyp_class(tconstr, l), represents:(#tconstr4 when $l=[]!,@*T #tconstr2 when %l=[T]!,@6(T1, ..., Tn) #tconstr& when 1l=[T1 ; ... ; Tn]!.@@@@@@@@@@@@@@"""@@3'T as 'a!.@@@@@@@@@@@@"""z"r@@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@!.@@@@@@@@@@@@@@#z#y@@3*(module S)!.@@@@@@@@@@@@#u#t#c@@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)!.@@@@@@@@@@@@@@@#}@@#|@#f@@#e@#;@@#:@#-@@#,@@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@@#T@@#S@#F@@#E@#8@@#7@@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@@@@@@@@@@@@""@@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@@""@@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@@@@@@@@@@@@#?#>#6@@3#E.l@@@@@@@@@@@@#&#%## @@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@@@@@@@@@@@@"z"y@@3;{< x1 = E1; ...; xn = En >}@@@@@@@@@@@@"U"T"A"9@@36let module M = ME in E@@@@@@@@@@@@"2"1")@@34let exception C 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"- %M.(E)/let open M in E@0let open! M in E@@@@@@@@@@@@@@!쑠!@@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@@!@@!@!@@!~@!q@@!p@!c@@!b@@A@@ @#=Parsetree.function_param_desc@@!R!Q!I!<@@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@@ S@#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@@ @#9Parsetree.type_constraint@@""@@@""!@@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"]@@@@@@@@@@@@@@@"5@@"4@"!@@" @"@@"@"@@"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@@@@@@@@@@@@"@@"33... [@@id1] [@@id2]@@@@@@@@@@@@"@@"@@A@@j@#3Parsetree.type_kind@@"p@@@"j"i@@@"V"U@@39Invariant: non-empty list@@@@@@@@@@@@"H@@@@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@!.@@@@@@@@@@@@@"@@"@"~@@"}@"p@@"o@"b@@"a@"T@@"S33l : T [@id1] [@id2]@@@@@@@@@@@@@A@@@# !Parsetree.constructor_declaration@@"I@@"H@"5@@"4@"@@"@" @@" @!@@!@!@@!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 += ...").@@@@@@@@@@@@@"6@@"5@"@@"@!@@!@!@@!@!@@!@!@@!3$... %@@id1! %@@id2@@@@@@@@@@@@@A@@@#?Parsetree.extension_constructor@@!@@!@!@@!@!@@!@!@@!36C of ... [@id1] [@id2]@@@@@@@@@@@@@A@@@#8Parsetree.type_exception3?Definition of a new exception (+exception E").@@@@@@@@@@@@@!@@!@!@@!@!r@@!q33... [@@id1] [@@id2]@@@@@@@@@@@@@A@@@# $Parsetree.extension_constructor_kind@@!g!f!R!J@@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@!.@@@@@@@@@@@@!a!`@@32constraint T1 = T2@@@@@@@@@@@@!K!J@@3'[@@@id]@@@@@@@@@@@@!C!B@@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.@@@@@@@@@@@@!XY@!S@@!R@!E@@!D@!@@!@!@@!@ @@ @ @@ 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@@@#9Parsetree.class_expr_desc@@   @@3!c% and 1['a1, ..., 'an] c@@@@@@@@@@@@  ~@@3.object ... end@@@@@@@@@@@@ w v n a Y@@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@@P@#;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 = ...@@@@@@@@@@@@ r q@@3 $type t1 := ... and ... and tn := ...@@@@@@@@@@@@ d c@@3.type t1 += ...@@@@@@@@@@@@ \ [@@30exception C of T@@@@@@@@@@@@ T S@@3,module X = M% and -module X : MT@@@@@@@@@@@@ R Q@@3-module X := M@@@@@@@@@@@@ J I@@3 (module rec X1 : MT1 and ... and Xn : MTn@@@@@@@@@@@@ < ;@@32module type S = MT% and -module type S@@@@@@@@@@@@ : 9@@35module type S := ...@@@@@@@@@@@@ 2 1@@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@# ME@@@@@@@@@@@@ZYQ@@3(ME1(ME2)@@@@@@@@@@@@JI@@3%ME1()@@@@@@@@@@@@BA9@@3)(ME : MT)@@@@@@@@@@@@21@@3'(val E)@@@@@@@@@@@@*)@@3%[%id]@@@@@@@@@@@@@A@@@#3Parsetree.structure@@@A"@@#8Parsetree.structure_item@@@@@@@@@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@@y@#:Parsetree.value_constraint@@~|@@{@b@@a@@@@PN@@M@;@@:@@@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@W@@V@I@@H@6@@5@(@@'@@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@@%@@#@@A)Longident(Location(Asttypes@@@@@