1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694openImportmoduletypeIntf=sig[@@@ocaml.text"{2 Value description}"]valvalue_description:loc:Location.t->name:stringloc->type_:core_type->prim:stringlist->value_description[@@ocaml.doc" [value_description] constructs an {! Ast.value_description}\n\n{b Example OCaml}\n\n Values of type {!value_description} represents:\n\n - [val x: T], when {{!value_description.pval_prim} [pval_prim]} is [[]]\n - [external x: T = \"s1\" ... \"sn\"] when\n {{!value_description.pval_prim} [pval_prim]} is [[\"s1\";...\"sn\"]] "][@@@ocaml.text"{2 Value binding}"]valvalue_binding:loc:Location.t->pat:pattern->expr:expression->value_binding[@@ocaml.doc" [value_binding] constructs an {! Ast.value_binding}\n\n "][@@@ocaml.text"{2 Type extension}"]valtype_extension:loc:Location.t->path:longidentloc->params:(core_type*(variance*injectivity))list->constructors:extension_constructorlist->private_:private_flag->type_extension[@@ocaml.doc" [type_extension] constructs an {! Ast.type_extension}\n\n{b Example OCaml}\n\n Definition of new extensions constructors for the extensive sum type [t]\n ([type t += ...]). "][@@@ocaml.text"{2 Type exception}"]valtype_exception:loc:Location.t->extension_constructor->type_exception[@@ocaml.doc" [type_exception] constructs an {! Ast.type_exception}\n\n{b Example OCaml}\n\n Definition of a new exception ([exception E]). "][@@@ocaml.text"{2 Type declaration}"]valtype_declaration:loc:Location.t->name:stringloc->params:(core_type*(variance*injectivity))list->cstrs:(core_type*core_type*location)list->kind:type_kind->private_:private_flag->manifest:core_typeoption->type_declaration[@@ocaml.doc" [type_declaration] constructs an {! Ast.type_declaration}\n\n{b Example OCaml}\n\n Here are type declarations and their representation, for various\n {{!type_declaration.ptype_kind} [ptype_kind]} and\n {{!type_declaration.ptype_manifest} [ptype_manifest]} values:\n\n - [type t] when [type_kind] is\n {{!type_kind.Ptype_abstract} [Ptype_abstract]}, and [manifest] is [None],\n - [type t = T0] when [type_kind] is\n {{!type_kind.Ptype_abstract} [Ptype_abstract]}, and [manifest] is\n [Some T0],\n - [type t = C of T | ...] when [type_kind] is\n {{!type_kind.Ptype_variant} [Ptype_variant]}, and [manifest] is [None],\n - [type t = T0 = C of T | ...] when [type_kind] is\n {{!type_kind.Ptype_variant} [Ptype_variant]}, and [manifest] is [Some T0],\n - [type t = {l: T; ...}] when [type_kind] is\n {{!type_kind.Ptype_record} [Ptype_record]}, and [manifest] is [None],\n - [type t = T0 = {l : T; ...}] when [type_kind] is\n {{!type_kind.Ptype_record} [Ptype_record]}, and [manifest] is [Some T0],\n - [type t = ..] when [type_kind] is {{!type_kind.Ptype_open} [Ptype_open]},\n and [manifest] is [None]. "][@@@ocaml.text"{2 Toplevel directive}"]valtoplevel_directive:loc:Location.t->name:stringloc->arg:directive_argumentoption->toplevel_directive[@@ocaml.doc" [toplevel_directive] constructs an {! Ast.toplevel_directive}\n\n "][@@@ocaml.text"{2 Structure item}"]valpstr_extension:loc:Location.t->extension->attributes->structure_item[@@ocaml.doc" [pstr_extension] constructs an {! Ast.Pstr_extension}\n\n{b Example OCaml}\n\n [[%%id]] "]valpstr_attribute:loc:Location.t->attribute->structure_item[@@ocaml.doc" [pstr_attribute] constructs an {! Ast.Pstr_attribute}\n\n{b Example OCaml}\n\n [[@@@id]] "]valpstr_include:loc:Location.t->include_declaration->structure_item[@@ocaml.doc" [pstr_include] constructs an {! Ast.Pstr_include}\n\n{b Example OCaml}\n\n [include ME] "]valpstr_class_type:loc:Location.t->class_type_declarationlist->structure_item[@@ocaml.doc" [pstr_class_type] constructs an {! Ast.Pstr_class_type}\n\n{b Example OCaml}\n\n [class type ct1 = ... and ... and ctn = ...] "]valpstr_class:loc:Location.t->class_declarationlist->structure_item[@@ocaml.doc" [pstr_class] constructs an {! Ast.Pstr_class}\n\n{b Example OCaml}\n\n [class c1 = ... and ... and cn = ...] "]valpstr_open:loc:Location.t->open_declaration->structure_item[@@ocaml.doc" [pstr_open] constructs an {! Ast.Pstr_open}\n\n{b Example OCaml}\n\n [open X] "]valpstr_modtype:loc:Location.t->module_type_declaration->structure_item[@@ocaml.doc" [pstr_modtype] constructs an {! Ast.Pstr_modtype}\n\n{b Example OCaml}\n\n [module type S = MT] "]valpstr_recmodule:loc:Location.t->module_bindinglist->structure_item[@@ocaml.doc" [pstr_recmodule] constructs an {! Ast.Pstr_recmodule}\n\n{b Example OCaml}\n\n [module rec X1 = ME1 and ... and Xn = MEn] "]valpstr_module:loc:Location.t->module_binding->structure_item[@@ocaml.doc" [pstr_module] constructs an {! Ast.Pstr_module}\n\n{b Example OCaml}\n\n [module X = ME] "]valpstr_exception:loc:Location.t->type_exception->structure_item[@@ocaml.doc" [pstr_exception] constructs an {! Ast.Pstr_exception}\n\n{b Example OCaml}\n\n - [exception C of T]\n - [exception C = M.X] "]valpstr_typext:loc:Location.t->type_extension->structure_item[@@ocaml.doc" [pstr_typext] constructs an {! Ast.Pstr_typext}\n\n{b Example OCaml}\n\n [type t1 += ...] "]valpstr_type:loc:Location.t->rec_flag->type_declarationlist->structure_item[@@ocaml.doc" [pstr_type] constructs an {! Ast.Pstr_type}\n\n{b Example OCaml}\n\n [type t1 = ... and ... and tn = ...] "]valpstr_primitive:loc:Location.t->value_description->structure_item[@@ocaml.doc" [pstr_primitive] constructs an {! Ast.Pstr_primitive}\n\n{b Example OCaml}\n\n - [val x: T]\n - [external x: T = \"s1\" ... \"sn\" ] "]valpstr_value:loc:Location.t->rec_flag->value_bindinglist->structure_item[@@ocaml.doc" [pstr_value] constructs an {! Ast.Pstr_value}\n\n{b Example OCaml}\n\n [Pstr_value(rec, [(P1, E1 ; ... ; (Pn, En))])] represents:\n\n - [let P1 = E1 and ... and Pn = EN] when [rec] is\n {{!Asttypes.rec_flag.Nonrecursive} [Nonrecursive]},\n - [let rec P1 = E1 and ... and Pn = EN ] when [rec] is\n {{!Asttypes.rec_flag.Recursive} [Recursive]}. "]valpstr_eval:loc:Location.t->expression->attributes->structure_item[@@ocaml.doc" [pstr_eval] constructs an {! Ast.Pstr_eval}\n\n{b Example OCaml}\n\n [E] "][@@@ocaml.text"{2 Signature item}"]valpsig_extension:loc:Location.t->extension->attributes->signature_item[@@ocaml.doc" [psig_extension] constructs an {! Ast.Psig_extension}\n\n{b Example OCaml}\n\n [[%%id]] "]valpsig_attribute:loc:Location.t->attribute->signature_item[@@ocaml.doc" [psig_attribute] constructs an {! Ast.Psig_attribute}\n\n{b Example OCaml}\n\n [[@@@id]] "]valpsig_class_type:loc:Location.t->class_type_declarationlist->signature_item[@@ocaml.doc" [psig_class_type] constructs an {! Ast.Psig_class_type}\n\n{b Example OCaml}\n\n [class type ct1 = ... and ... and ctn = ...] "]valpsig_class:loc:Location.t->class_descriptionlist->signature_item[@@ocaml.doc" [psig_class] constructs an {! Ast.Psig_class}\n\n{b Example OCaml}\n\n [class c1 : ... and ... and cn : ...] "]valpsig_include:loc:Location.t->include_description->signature_item[@@ocaml.doc" [psig_include] constructs an {! Ast.Psig_include}\n\n{b Example OCaml}\n\n [include MT] "]valpsig_open:loc:Location.t->open_description->signature_item[@@ocaml.doc" [psig_open] constructs an {! Ast.Psig_open}\n\n{b Example OCaml}\n\n [open X] "]valpsig_modtypesubst:loc:Location.t->module_type_declaration->signature_item[@@ocaml.doc" [psig_modtypesubst] constructs an {! Ast.Psig_modtypesubst}\n\n{b Example OCaml}\n\n [module type S := ...] "]valpsig_modtype:loc:Location.t->module_type_declaration->signature_item[@@ocaml.doc" [psig_modtype] constructs an {! Ast.Psig_modtype}\n\n{b Example OCaml}\n\n [module type S = MT] and [module type S] "]valpsig_recmodule:loc:Location.t->module_declarationlist->signature_item[@@ocaml.doc" [psig_recmodule] constructs an {! Ast.Psig_recmodule}\n\n{b Example OCaml}\n\n [module rec X1 : MT1 and ... and Xn : MTn] "]valpsig_modsubst:loc:Location.t->module_substitution->signature_item[@@ocaml.doc" [psig_modsubst] constructs an {! Ast.Psig_modsubst}\n\n{b Example OCaml}\n\n [module X := M] "]valpsig_module:loc:Location.t->module_declaration->signature_item[@@ocaml.doc" [psig_module] constructs an {! Ast.Psig_module}\n\n{b Example OCaml}\n\n [module X = M] and [module X : MT] "]valpsig_exception:loc:Location.t->type_exception->signature_item[@@ocaml.doc" [psig_exception] constructs an {! Ast.Psig_exception}\n\n{b Example OCaml}\n\n [exception C of T] "]valpsig_typext:loc:Location.t->type_extension->signature_item[@@ocaml.doc" [psig_typext] constructs an {! Ast.Psig_typext}\n\n{b Example OCaml}\n\n [type t1 += ...] "]valpsig_typesubst:loc:Location.t->type_declarationlist->signature_item[@@ocaml.doc" [psig_typesubst] constructs an {! Ast.Psig_typesubst}\n\n{b Example OCaml}\n\n [type t1 := ... and ... and tn := ...] "]valpsig_type:loc:Location.t->rec_flag->type_declarationlist->signature_item[@@ocaml.doc" [psig_type] constructs an {! Ast.Psig_type}\n\n{b Example OCaml}\n\n [type t1 = ... and ... and tn = ...] "]valpsig_value:loc:Location.t->value_description->signature_item[@@ocaml.doc" [psig_value] constructs an {! Ast.Psig_value}\n\n{b Example OCaml}\n\n - [val x: T]\n - [external x: T = \"s1\" ... \"sn\"] "][@@@ocaml.text"{2 Row field}"]valrinherit:loc:Location.t->core_type->row_field[@@ocaml.doc" [rinherit] constructs an {! Ast.Rinherit}\n\n{b Example OCaml}\n\n [[ | t ]] "]valrtag:loc:Location.t->labelloc->bool->core_typelist->row_field[@@ocaml.doc" [rtag] constructs an {! Ast.Rtag}\n\n{b Example OCaml}\n\n [Rtag(`A, b, l)] represents:\n\n - [`A] when [b] is [true] and [l] is [[]],\n - [`A of T] when [b] is [false] and [l] is [[T]],\n - [`A of T1 & .. & Tn] when [b] is [false] and [l] is [[T1;...Tn]],\n - [`A of & T1 & .. & Tn] when [b] is [true] and [l] is [[T1;...Tn]].\n\n - The [bool] field is true if the tag contains a constant (empty)\n constructor.\n - [&] occurs when several types are used for the same constructor (see\n 4.2 in the manual) "][@@@ocaml.text"{2 Position}"]valposition:fname:string->lnum:int->bol:int->cnum:int->position[@@ocaml.doc" [position] constructs an {! Ast.position}\n\n "][@@@ocaml.text"{2 Pattern}"]valppat_open:loc:Location.t->longidentloc->pattern->pattern[@@ocaml.doc" [ppat_open] constructs an {! Ast.Ppat_open}\n\n{b Example OCaml}\n\n Pattern [M.(P)] "]valppat_extension:loc:Location.t->extension->pattern[@@ocaml.doc" [ppat_extension] constructs an {! Ast.Ppat_extension}\n\n{b Example OCaml}\n\n Pattern [[%id]] "]valppat_exception:loc:Location.t->pattern->pattern[@@ocaml.doc" [ppat_exception] constructs an {! Ast.Ppat_exception}\n\n{b Example OCaml}\n\n Pattern [exception P] "]valppat_unpack:loc:Location.t->stringoptionloc->pattern[@@ocaml.doc" [ppat_unpack] constructs an {! Ast.Ppat_unpack}\n\n{b Example OCaml}\n\n [Ppat_unpack(s)] represents:\n\n - [(module P)] when [s] is [Some \"P\"]\n - [(module _)] when [s] is [None]\n\n Note: [(module P : S)] is represented as\n [Ppat_constraint(Ppat_unpack(Some \"P\"), Ptyp_package S)] "]valppat_lazy:loc:Location.t->pattern->pattern[@@ocaml.doc" [ppat_lazy] constructs an {! Ast.Ppat_lazy}\n\n{b Example OCaml}\n\n Pattern [lazy P] "]valppat_type:loc:Location.t->longidentloc->pattern[@@ocaml.doc" [ppat_type] constructs an {! Ast.Ppat_type}\n\n{b Example OCaml}\n\n Pattern [#tconst] "]valppat_constraint:loc:Location.t->pattern->core_type->pattern[@@ocaml.doc" [ppat_constraint] constructs an {! Ast.Ppat_constraint}\n\n{b Example OCaml}\n\n Pattern [(P : T)] "]valppat_or:loc:Location.t->pattern->pattern->pattern[@@ocaml.doc" [ppat_or] constructs an {! Ast.Ppat_or}\n\n{b Example OCaml}\n\n Pattern [P1 | P2] "]valppat_array:loc:Location.t->patternlist->pattern[@@ocaml.doc" [ppat_array] constructs an {! Ast.Ppat_array}\n\n{b Example OCaml}\n\n Pattern [[| P1; ...; Pn |]] "]valppat_record:loc:Location.t->(longidentloc*pattern)list->closed_flag->pattern[@@ocaml.doc" [ppat_record] constructs an {! Ast.Ppat_record}\n\n{b Example OCaml}\n\n [Ppat_record([(l1, P1) ; ... ; (ln, Pn)], flag)] represents:\n\n - [{ l1=P1; ...; ln=Pn }] when [flag] is\n {{!Asttypes.closed_flag.Closed} [Closed]}\n - [{ l1=P1; ...; ln=Pn; _}] when [flag] is\n {{!Asttypes.closed_flag.Open} [Open]}\n\n Invariant: [n > 0] "]valppat_variant:loc:Location.t->label->patternoption->pattern[@@ocaml.doc" [ppat_variant] constructs an {! Ast.Ppat_variant}\n\n{b Example OCaml}\n\n [Ppat_variant(`A, pat)] represents:\n\n - [`A] when [pat] is [None],\n - [`A P] when [pat] is [Some P] "]valppat_construct:loc:Location.t->longidentloc->(stringloclist*pattern)option->pattern[@@ocaml.doc" [ppat_construct] constructs an {! Ast.Ppat_construct}\n\n{b Example OCaml}\n\n [Ppat_construct(C, args)] represents:\n\n - [C] when [args] is [None],\n - [C P] when [args] is [Some ([], P)]\n - [C (P1, ..., Pn)] when [args] is\n [Some ([], Ppat_tuple [P1; ...; Pn])]\n - [C (type a b) P] when [args] is [Some ([a; b], P)] "]valppat_tuple:loc:Location.t->patternlist->pattern[@@ocaml.doc" [ppat_tuple] constructs an {! Ast.Ppat_tuple}\n\n{b Example OCaml}\n\n Patterns [(P1, ..., Pn)].\n\n Invariant: [n >= 2] "]valppat_interval:loc:Location.t->constant->constant->pattern[@@ocaml.doc" [ppat_interval] constructs an {! Ast.Ppat_interval}\n\n{b Example OCaml}\n\n Patterns such as ['a'..'z'].\n\n Other forms of interval are recognized by the parser but rejected by\n the type-checker. "]valppat_constant:loc:Location.t->constant->pattern[@@ocaml.doc" [ppat_constant] constructs an {! Ast.Ppat_constant}\n\n{b Example OCaml}\n\n Patterns such as [1], ['a'], [\"true\"], [1.0], [1l], [1L], [1n] "]valppat_alias:loc:Location.t->pattern->stringloc->pattern[@@ocaml.doc" [ppat_alias] constructs an {! Ast.Ppat_alias}\n\n{b Example OCaml}\n\n An alias pattern such as [P as 'a] "]valppat_var:loc:Location.t->stringloc->pattern[@@ocaml.doc" [ppat_var] constructs an {! Ast.Ppat_var}\n\n{b Example OCaml}\n\n A variable pattern such as [x] "]valppat_any:loc:Location.t->pattern[@@ocaml.doc" [ppat_any] constructs an {! Ast.Ppat_any}\n\n{b Example OCaml}\n\n The pattern [_]. "][@@@ocaml.text"{2 Object field}"]valoinherit:loc:Location.t->core_type->object_field[@@ocaml.doc" [oinherit] constructs an {! Ast.Oinherit}\n\n "]valotag:loc:Location.t->labelloc->core_type->object_field[@@ocaml.doc" [otag] constructs an {! Ast.Otag}\n\n "][@@@ocaml.text"{2 Module type declaration}"]valmodule_type_declaration:loc:Location.t->name:stringloc->type_:module_typeoption->module_type_declaration[@@ocaml.doc" [module_type_declaration] constructs an {! Ast.module_type_declaration}\n\n{b Example OCaml}\n\n Values of type [module_type_declaration] represents:\n\n - [S = MT],\n - [S] for abstract module type declaration, when\n {{!module_type_declaration.pmtd_type} [pmtd_type]} is [None]. "][@@@ocaml.text"{2 Module type}"]valpmty_alias:loc:Location.t->longidentloc->module_type[@@ocaml.doc" [pmty_alias] constructs an {! Ast.Pmty_alias}\n\n{b Example OCaml}\n\n [(module M)] "]valpmty_extension:loc:Location.t->extension->module_type[@@ocaml.doc" [pmty_extension] constructs an {! Ast.Pmty_extension}\n\n{b Example OCaml}\n\n [[%id]] "]valpmty_typeof:loc:Location.t->module_expr->module_type[@@ocaml.doc" [pmty_typeof] constructs an {! Ast.Pmty_typeof}\n\n{b Example OCaml}\n\n [module type of ME] "]valpmty_with:loc:Location.t->module_type->with_constraintlist->module_type[@@ocaml.doc" [pmty_with] constructs an {! Ast.Pmty_with}\n\n{b Example OCaml}\n\n [MT with ...] "]valpmty_functor:loc:Location.t->functor_parameter->module_type->module_type[@@ocaml.doc" [pmty_functor] constructs an {! Ast.Pmty_functor}\n\n{b Example OCaml}\n\n [functor(X : MT1) -> MT2] "]valpmty_signature:loc:Location.t->signature->module_type[@@ocaml.doc" [pmty_signature] constructs an {! Ast.Pmty_signature}\n\n{b Example OCaml}\n\n [sig ... end] "]valpmty_ident:loc:Location.t->longidentloc->module_type[@@ocaml.doc" [pmty_ident] constructs an {! Ast.Pmty_ident}\n\n{b Example OCaml}\n\n [Pmty_ident(S)] represents [S] "][@@@ocaml.text"{2 Module substitution}"]valmodule_substitution:loc:Location.t->name:stringloc->manifest:longidentloc->module_substitution[@@ocaml.doc" [module_substitution] constructs an {! Ast.module_substitution}\n\n{b Example OCaml}\n\n Values of type [module_substitution] represents [S := M] "][@@@ocaml.text"{2 Module expr}"]valpmod_extension:loc:Location.t->extension->module_expr[@@ocaml.doc" [pmod_extension] constructs an {! Ast.Pmod_extension}\n\n{b Example OCaml}\n\n [[%id]] "]valpmod_unpack:loc:Location.t->expression->module_expr[@@ocaml.doc" [pmod_unpack] constructs an {! Ast.Pmod_unpack}\n\n{b Example OCaml}\n\n [(val E)] "]valpmod_constraint:loc:Location.t->module_expr->module_type->module_expr[@@ocaml.doc" [pmod_constraint] constructs an {! Ast.Pmod_constraint}\n\n{b Example OCaml}\n\n [(ME : MT)] "]valpmod_apply:loc:Location.t->module_expr->module_expr->module_expr[@@ocaml.doc" [pmod_apply] constructs an {! Ast.Pmod_apply}\n\n{b Example OCaml}\n\n [ME1(ME2)] "]valpmod_functor:loc:Location.t->functor_parameter->module_expr->module_expr[@@ocaml.doc" [pmod_functor] constructs an {! Ast.Pmod_functor}\n\n{b Example OCaml}\n\n [functor(X : MT1) -> ME] "]valpmod_structure:loc:Location.t->structure->module_expr[@@ocaml.doc" [pmod_structure] constructs an {! Ast.Pmod_structure}\n\n{b Example OCaml}\n\n [struct ... end] "]valpmod_ident:loc:Location.t->longidentloc->module_expr[@@ocaml.doc" [pmod_ident] constructs an {! Ast.Pmod_ident}\n\n{b Example OCaml}\n\n [X] "][@@@ocaml.text"{2 Module declaration}"]valmodule_declaration:loc:Location.t->name:stringoptionloc->type_:module_type->module_declaration[@@ocaml.doc" [module_declaration] constructs an {! Ast.module_declaration}\n\n{b Example OCaml}\n\n Values of type [module_declaration] represents [S : MT] "][@@@ocaml.text"{2 Module binding}"]valmodule_binding:loc:Location.t->name:stringoptionloc->expr:module_expr->module_binding[@@ocaml.doc" [module_binding] constructs an {! Ast.module_binding}\n\n{b Example OCaml}\n\n Values of type [module_binding] represents [module X = ME] "][@@@ocaml.text"{2 Location}"]vallocation:start:position->end_:position->ghost:bool->location[@@ocaml.doc" [location] constructs an {! Ast.location}\n\n "][@@@ocaml.text"{2 Letop}"]valletop:let_:binding_op->ands:binding_oplist->body:expression->letop[@@ocaml.doc" [letop] constructs an {! Ast.letop}\n\n "][@@@ocaml.text"{2 Label declaration}"]vallabel_declaration:loc:Location.t->name:stringloc->mutable_:mutable_flag->type_:core_type->label_declaration[@@ocaml.doc" [label_declaration] constructs an {! Ast.label_declaration}\n\n{b Example OCaml}\n\n - [{ ...; l: T; ... }] when {{!label_declaration.pld_mutable} [pld_mutable]}\n is {{!Asttypes.mutable_flag.Immutable} [Immutable]},\n - [{ ...; mutable l: T; ... }] when\n {{!label_declaration.pld_mutable} [pld_mutable]} is\n {{!Asttypes.mutable_flag.Mutable} [Mutable]}.\n\n Note: [T] can be a {{!core_type_desc.Ptyp_poly} [Ptyp_poly]}. "][@@@ocaml.text"{2 Extension constructor}"]valextension_constructor:loc:Location.t->name:stringloc->kind:extension_constructor_kind->extension_constructor[@@ocaml.doc" [extension_constructor] constructs an {! Ast.extension_constructor}\n\n "][@@@ocaml.text"{2 Expression}"]valpexp_unreachable:loc:Location.t->expression[@@ocaml.doc" [pexp_unreachable] constructs an {! Ast.Pexp_unreachable}\n\n{b Example OCaml}\n\n [.] "]valpexp_extension:loc:Location.t->extension->expression[@@ocaml.doc" [pexp_extension] constructs an {! Ast.Pexp_extension}\n\n{b Example OCaml}\n\n [[%id]] "]valpexp_letop:loc:Location.t->letop->expression[@@ocaml.doc" [pexp_letop] constructs an {! Ast.Pexp_letop}\n\n{b Example OCaml}\n\n - [let* P = E0 in E1]\n - [let* P0 = E00 and* P1 = E01 in E1] "]valpexp_open:loc:Location.t->open_declaration->expression->expression[@@ocaml.doc" [pexp_open] constructs an {! Ast.Pexp_open}\n\n{b Example OCaml}\n\n - [M.(E)]\n - [let open M in E]\n - [let open! M in E] "]valpexp_pack:loc:Location.t->module_expr->expression[@@ocaml.doc" [pexp_pack] constructs an {! Ast.Pexp_pack}\n\n{b Example OCaml}\n\n [(module ME)].\n\n [(module ME : S)] is represented as\n [Pexp_constraint(Pexp_pack ME, Ptyp_package S)] "]valpexp_newtype:loc:Location.t->stringloc->expression->expression[@@ocaml.doc" [pexp_newtype] constructs an {! Ast.Pexp_newtype}\n\n{b Example OCaml}\n\n [fun (type t) -> E] "]valpexp_object:loc:Location.t->class_structure->expression[@@ocaml.doc" [pexp_object] constructs an {! Ast.Pexp_object}\n\n{b Example OCaml}\n\n [object ... end] "]valpexp_poly:loc:Location.t->expression->core_typeoption->expression[@@ocaml.doc" [pexp_poly] constructs an {! Ast.Pexp_poly}\n\n{b Example OCaml}\n\n Used for method bodies.\n\n Can only be used as the expression under\n {{!class_field_kind.Cfk_concrete} [Cfk_concrete]} for methods (not\n values). "]valpexp_lazy:loc:Location.t->expression->expression[@@ocaml.doc" [pexp_lazy] constructs an {! Ast.Pexp_lazy}\n\n{b Example OCaml}\n\n [lazy E] "]valpexp_assert:loc:Location.t->expression->expression[@@ocaml.doc" [pexp_assert] constructs an {! Ast.Pexp_assert}\n\n{b Example OCaml}\n\n [assert E].\n\n Note: [assert false] is treated in a special way by the type-checker.\n "]valpexp_letexception:loc:Location.t->extension_constructor->expression->expression[@@ocaml.doc" [pexp_letexception] constructs an {! Ast.Pexp_letexception}\n\n{b Example OCaml}\n\n [let exception C in E] "]valpexp_letmodule:loc:Location.t->stringoptionloc->module_expr->expression->expression[@@ocaml.doc" [pexp_letmodule] constructs an {! Ast.Pexp_letmodule}\n\n{b Example OCaml}\n\n [let module M = ME in E] "]valpexp_override:loc:Location.t->(labelloc*expression)list->expression[@@ocaml.doc" [pexp_override] constructs an {! Ast.Pexp_override}\n\n{b Example OCaml}\n\n [{< x1 = E1; ...; xn = En >}] "]valpexp_setinstvar:loc:Location.t->labelloc->expression->expression[@@ocaml.doc" [pexp_setinstvar] constructs an {! Ast.Pexp_setinstvar}\n\n{b Example OCaml}\n\n [x <- 2] "]valpexp_new:loc:Location.t->longidentloc->expression[@@ocaml.doc" [pexp_new] constructs an {! Ast.Pexp_new}\n\n{b Example OCaml}\n\n [new M.c] "]valpexp_send:loc:Location.t->expression->labelloc->expression[@@ocaml.doc" [pexp_send] constructs an {! Ast.Pexp_send}\n\n{b Example OCaml}\n\n [E # m] "]valpexp_coerce:loc:Location.t->expression->core_typeoption->core_type->expression[@@ocaml.doc" [pexp_coerce] constructs an {! Ast.Pexp_coerce}\n\n{b Example OCaml}\n\n [Pexp_coerce(E, from, T)] represents\n\n - [(E :> T)] when [from] is [None],\n - [(E : T0 :> T)] when [from] is [Some T0]. "]valpexp_constraint:loc:Location.t->expression->core_type->expression[@@ocaml.doc" [pexp_constraint] constructs an {! Ast.Pexp_constraint}\n\n{b Example OCaml}\n\n [(E : T)] "]valpexp_for:loc:Location.t->pattern->expression->expression->direction_flag->expression->expression[@@ocaml.doc" [pexp_for] constructs an {! Ast.Pexp_for}\n\n{b Example OCaml}\n\n [Pexp_for(i, E1, E2, direction, E3)] represents:\n\n - [for i = E1 to E2 do E3 done] when [direction] is\n {{!Asttypes.direction_flag.Upto} [Upto]}\n - [for i = E1 downto E2 do E3 done] when [direction] is\n {{!Asttypes.direction_flag.Downto} [Downto]} "]valpexp_while:loc:Location.t->expression->expression->expression[@@ocaml.doc" [pexp_while] constructs an {! Ast.Pexp_while}\n\n{b Example OCaml}\n\n [while E1 do E2 done] "]valpexp_sequence:loc:Location.t->expression->expression->expression[@@ocaml.doc" [pexp_sequence] constructs an {! Ast.Pexp_sequence}\n\n{b Example OCaml}\n\n [E1; E2] "]valpexp_ifthenelse:loc:Location.t->expression->expression->expressionoption->expression[@@ocaml.doc" [pexp_ifthenelse] constructs an {! Ast.Pexp_ifthenelse}\n\n{b Example OCaml}\n\n [if E1 then E2 else E3] "]valpexp_array:loc:Location.t->expressionlist->expression[@@ocaml.doc" [pexp_array] constructs an {! Ast.Pexp_array}\n\n{b Example OCaml}\n\n [[| E1; ...; En |]] "]valpexp_setfield:loc:Location.t->expression->longidentloc->expression->expression[@@ocaml.doc" [pexp_setfield] constructs an {! Ast.Pexp_setfield}\n\n{b Example OCaml}\n\n [E1.l <- E2] "]valpexp_field:loc:Location.t->expression->longidentloc->expression[@@ocaml.doc" [pexp_field] constructs an {! Ast.Pexp_field}\n\n{b Example OCaml}\n\n [E.l] "]valpexp_record:loc:Location.t->(longidentloc*expression)list->expressionoption->expression[@@ocaml.doc" [pexp_record] constructs an {! Ast.Pexp_record}\n\n{b Example OCaml}\n\n [Pexp_record([(l1,P1) ; ... ; (ln,Pn)], exp0)] represents\n\n - [{ l1=P1; ...; ln=Pn }] when [exp0] is [None]\n - [{ E0 with l1=P1; ...; ln=Pn }] when [exp0] is [Some E0]\n\n Invariant: [n > 0] "]valpexp_variant:loc:Location.t->label->expressionoption->expression[@@ocaml.doc" [pexp_variant] constructs an {! Ast.Pexp_variant}\n\n{b Example OCaml}\n\n [Pexp_variant(`A, exp)] represents\n\n - [`A] when [exp] is [None]\n - [`A E] when [exp] is [Some E] "]valpexp_construct:loc:Location.t->longidentloc->expressionoption->expression[@@ocaml.doc" [pexp_construct] constructs an {! Ast.Pexp_construct}\n\n{b Example OCaml}\n\n [Pexp_construct(C, exp)] represents:\n\n - [C] when [exp] is [None],\n - [C E] when [exp] is [Some E],\n - [C (E1, ..., En)] when [exp] is [Some (Pexp_tuple[E1;...;En])] "]valpexp_tuple:loc:Location.t->expressionlist->expression[@@ocaml.doc" [pexp_tuple] constructs an {! Ast.Pexp_tuple}\n\n{b Example OCaml}\n\n Expressions [(E1, ..., En)]\n\n Invariant: [n >= 2] "]valpexp_try:loc:Location.t->expression->cases->expression[@@ocaml.doc" [pexp_try] constructs an {! Ast.Pexp_try}\n\n{b Example OCaml}\n\n [try E0 with P1 -> E1 | ... | Pn -> En] "]valpexp_match:loc:Location.t->expression->cases->expression[@@ocaml.doc" [pexp_match] constructs an {! Ast.Pexp_match}\n\n{b Example OCaml}\n\n [match E0 with P1 -> E1 | ... | Pn -> En] "]valpexp_apply:loc:Location.t->expression->(arg_label*expression)list->expression[@@ocaml.doc" [pexp_apply] constructs an {! Ast.Pexp_apply}\n\n{b Example OCaml}\n\n [Pexp_apply(E0, [(l1, E1) ; ... ; (ln, En)])] represents\n [E0 ~l1:E1 ... ~ln:En]\n\n [li] can be {{!Asttypes.arg_label.Nolabel} [Nolabel]} (non labeled\n argument), {{!Asttypes.arg_label.Labelled} [Labelled]} (labelled\n arguments) or {{!Asttypes.arg_label.Optional} [Optional]} (optional\n argument).\n\n Invariant: [n > 0] "]valpexp_fun:loc:Location.t->arg_label->expressionoption->pattern->expression->expression[@@ocaml.doc" [pexp_fun] constructs an {! Ast.Pexp_fun}\n\n{b Example OCaml}\n\n [Pexp_fun(lbl, exp0, P, E1)] represents:\n\n - [fun P -> E1] when [lbl] is\n {{!Asttypes.arg_label.Nolabel} [Nolabel]} and [exp0] is [None]\n - [fun ~l:P -> E1] when [lbl] is\n {{!Asttypes.arg_label.Labelled} [Labelled l]} and [exp0] is [None]\n - [fun ?l:P -> E1] when [lbl] is\n {{!Asttypes.arg_label.Optional} [Optional l]} and [exp0] is [None]\n - [fun ?l:(P = E0) -> E1] when [lbl] is\n {{!Asttypes.arg_label.Optional} [Optional l]} and [exp0] is\n [Some E0]\n\n Notes:\n\n - If [E0] is provided, only\n {{!Asttypes.arg_label.Optional} [Optional]} is allowed.\n - [fun P1 P2 .. Pn -> E1] is represented as nested\n {{!expression_desc.Pexp_fun} [Pexp_fun]}.\n - [let f P = E] is represented using\n {{!expression_desc.Pexp_fun} [Pexp_fun]}. "]valpexp_function:loc:Location.t->cases->expression[@@ocaml.doc" [pexp_function] constructs an {! Ast.Pexp_function}\n\n{b Example OCaml}\n\n [function P1 -> E1 | ... | Pn -> En] "]valpexp_let:loc:Location.t->rec_flag->value_bindinglist->expression->expression[@@ocaml.doc" [pexp_let] constructs an {! Ast.Pexp_let}\n\n{b Example OCaml}\n\n [Pexp_let(flag, [(P1,E1) ; ... ; (Pn,En)], E)] represents:\n\n - [let P1 = E1 and ... and Pn = EN in E] when [flag] is\n {{!Asttypes.rec_flag.Nonrecursive} [Nonrecursive]},\n - [let rec P1 = E1 and ... and Pn = EN in E] when [flag] is\n {{!Asttypes.rec_flag.Recursive} [Recursive]}. "]valpexp_constant:loc:Location.t->constant->expression[@@ocaml.doc" [pexp_constant] constructs an {! Ast.Pexp_constant}\n\n{b Example OCaml}\n\n Expressions constant such as [1], ['a'], [\"true\"], [1.0], [1l], [1L],\n [1n] "]valpexp_ident:loc:Location.t->longidentloc->expression[@@ocaml.doc" [pexp_ident] constructs an {! Ast.Pexp_ident}\n\n{b Example OCaml}\n\n Identifiers such as [x] and [M.x] "][@@@ocaml.text"{2 Directive argument}"]valpdir_bool:loc:Location.t->bool->directive_argument[@@ocaml.doc" [pdir_bool] constructs an {! Ast.Pdir_bool}\n\n "]valpdir_ident:loc:Location.t->longident->directive_argument[@@ocaml.doc" [pdir_ident] constructs an {! Ast.Pdir_ident}\n\n "]valpdir_int:loc:Location.t->string->charoption->directive_argument[@@ocaml.doc" [pdir_int] constructs an {! Ast.Pdir_int}\n\n "]valpdir_string:loc:Location.t->string->directive_argument[@@ocaml.doc" [pdir_string] constructs an {! Ast.Pdir_string}\n\n "][@@@ocaml.text"{2 Core type}"]valptyp_extension:loc:Location.t->extension->core_type[@@ocaml.doc" [ptyp_extension] constructs an {! Ast.Ptyp_extension}\n\n{b Example OCaml}\n\n [[%id]]. "]valptyp_package:loc:Location.t->package_type->core_type[@@ocaml.doc" [ptyp_package] constructs an {! Ast.Ptyp_package}\n\n{b Example OCaml}\n\n [(module S)]. "]valptyp_poly:loc:Location.t->stringloclist->core_type->core_type[@@ocaml.doc" [ptyp_poly] constructs an {! Ast.Ptyp_poly}\n\n{b Example OCaml}\n\n ['a1 ... 'an. T]\n\n Can only appear in the following context:\n\n - As the {!core_type} of a\n {{!pattern_desc.Ppat_constraint} [Ppat_constraint]} node\n corresponding to a constraint on a let-binding:\n\n {[\n let x : 'a1 ... 'an. T = e ...\n ]}\n - Under {{!class_field_kind.Cfk_virtual} [Cfk_virtual]} for methods\n (not values).\n\n - As the {!core_type} of a\n {{!class_type_field_desc.Pctf_method} [Pctf_method]} node.\n\n - As the {!core_type} of a {{!expression_desc.Pexp_poly} [Pexp_poly]}\n node.\n\n - As the {{!label_declaration.pld_type} [pld_type]} field of a\n {!label_declaration}.\n\n - As a {!core_type} of a {{!core_type_desc.Ptyp_object} [Ptyp_object]}\n node.\n\n - As the {{!value_description.pval_type} [pval_type]} field of a\n {!value_description}. "]valptyp_variant:loc:Location.t->row_fieldlist->closed_flag->labellistoption->core_type[@@ocaml.doc" [ptyp_variant] constructs an {! Ast.Ptyp_variant}\n\n{b Example OCaml}\n\n [Ptyp_variant([`A;`B], flag, labels)] represents:\n\n - [[ `A|`B ]] when [flag] is\n {{!Asttypes.closed_flag.Closed} [Closed]}, and [labels] is [None],\n - [[> `A|`B ]] when [flag] is {{!Asttypes.closed_flag.Open} [Open]},\n and [labels] is [None],\n - [[< `A|`B ]] when [flag] is\n {{!Asttypes.closed_flag.Closed} [Closed]}, and [labels] is\n [Some []],\n - [[< `A|`B > `X `Y ]] when [flag] is\n {{!Asttypes.closed_flag.Closed} [Closed]}, and [labels] is\n [Some [\"X\";\"Y\"]]. "]valptyp_alias:loc:Location.t->core_type->string->core_type[@@ocaml.doc" [ptyp_alias] constructs an {! Ast.Ptyp_alias}\n\n{b Example OCaml}\n\n [T as 'a]. "]valptyp_class:loc:Location.t->longidentloc->core_typelist->core_type[@@ocaml.doc" [ptyp_class] constructs an {! Ast.Ptyp_class}\n\n{b Example OCaml}\n\n [Ptyp_class(tconstr, l)] represents:\n\n - [#tconstr] when [l=[]],\n - [T #tconstr] when [l=[T]],\n - [(T1, ..., Tn) #tconstr] when [l=[T1 ; ... ; Tn]]. "]valptyp_object:loc:Location.t->object_fieldlist->closed_flag->core_type[@@ocaml.doc" [ptyp_object] constructs an {! Ast.Ptyp_object}\n\n{b Example OCaml}\n\n [Ptyp_object([ l1:T1; ...; ln:Tn ], flag)] represents:\n\n - [< l1:T1; ...; ln:Tn >] when [flag] is\n {{!Asttypes.closed_flag.Closed} [Closed]},\n - [< l1:T1; ...; ln:Tn; .. >] when [flag] is\n {{!Asttypes.closed_flag.Open} [Open]}. "]valptyp_constr:loc:Location.t->longidentloc->core_typelist->core_type[@@ocaml.doc" [ptyp_constr] constructs an {! Ast.Ptyp_constr}\n\n{b Example OCaml}\n\n [Ptyp_constr(lident, l)] represents:\n\n - [tconstr] when [l=[]],\n - [T tconstr] when [l=[T]],\n - [(T1, ..., Tn) tconstr] when [l=[T1 ; ... ; Tn]]. "]valptyp_tuple:loc:Location.t->core_typelist->core_type[@@ocaml.doc" [ptyp_tuple] constructs an {! Ast.Ptyp_tuple}\n\n{b Example OCaml}\n\n [Ptyp_tuple([T1 ; ... ; Tn])] represents a product type\n [T1 * ... * Tn].\n\n Invariant: [n >= 2]. "]valptyp_arrow:loc:Location.t->arg_label->core_type->core_type->core_type[@@ocaml.doc" [ptyp_arrow] constructs an {! Ast.Ptyp_arrow}\n\n{b Example OCaml}\n\n [Ptyp_arrow(lbl, T1, T2)] represents:\n\n - [T1 -> T2] when [lbl] is {{!Asttypes.arg_label.Nolabel} [Nolabel]},\n - [~l:T1 -> T2] when [lbl] is\n {{!Asttypes.arg_label.Labelled} [Labelled]},\n - [?l:T1 -> T2] when [lbl] is\n {{!Asttypes.arg_label.Optional} [Optional]}. "]valptyp_var:loc:Location.t->string->core_type[@@ocaml.doc" [ptyp_var] constructs an {! Ast.Ptyp_var}\n\n{b Example OCaml}\n\n A type variable such as ['a] "]valptyp_any:loc:Location.t->core_type[@@ocaml.doc" [ptyp_any] constructs an {! Ast.Ptyp_any}\n\n{b Example OCaml}\n\n [_] "][@@@ocaml.text"{2 Constructor declaration}"]valconstructor_declaration:loc:Location.t->name:stringloc->vars:stringloclist->args:constructor_arguments->res:core_typeoption->constructor_declaration[@@ocaml.doc" [constructor_declaration] constructs an {! Ast.constructor_declaration}\n\n "][@@@ocaml.text"{2 Class type field}"]valpctf_extension:loc:Location.t->extension->class_type_field[@@ocaml.doc" [pctf_extension] constructs an {! Ast.Pctf_extension}\n\n{b Example OCaml}\n\n [[%%id]] "]valpctf_attribute:loc:Location.t->attribute->class_type_field[@@ocaml.doc" [pctf_attribute] constructs an {! Ast.Pctf_attribute}\n\n{b Example OCaml}\n\n [[@@@id]] "]valpctf_constraint:loc:Location.t->(core_type*core_type)->class_type_field[@@ocaml.doc" [pctf_constraint] constructs an {! Ast.Pctf_constraint}\n\n{b Example OCaml}\n\n [constraint T1 = T2] "]valpctf_method:loc:Location.t->(labelloc*private_flag*virtual_flag*core_type)->class_type_field[@@ocaml.doc" [pctf_method] constructs an {! Ast.Pctf_method}\n\n{b Example OCaml}\n\n [method x: T]\n\n Note: [T] can be a {{!core_type_desc.Ptyp_poly} [Ptyp_poly]}. "]valpctf_val:loc:Location.t->(labelloc*mutable_flag*virtual_flag*core_type)->class_type_field[@@ocaml.doc" [pctf_val] constructs an {! Ast.Pctf_val}\n\n{b Example OCaml}\n\n [val x: T] "]valpctf_inherit:loc:Location.t->class_type->class_type_field[@@ocaml.doc" [pctf_inherit] constructs an {! Ast.Pctf_inherit}\n\n{b Example OCaml}\n\n [inherit CT] "][@@@ocaml.text"{2 Class type}"]valpcty_open:loc:Location.t->open_description->class_type->class_type[@@ocaml.doc" [pcty_open] constructs an {! Ast.Pcty_open}\n\n{b Example OCaml}\n\n [let open M in CT] "]valpcty_extension:loc:Location.t->extension->class_type[@@ocaml.doc" [pcty_extension] constructs an {! Ast.Pcty_extension}\n\n{b Example OCaml}\n\n [%id] "]valpcty_arrow:loc:Location.t->arg_label->core_type->class_type->class_type[@@ocaml.doc" [pcty_arrow] constructs an {! Ast.Pcty_arrow}\n\n{b Example OCaml}\n\n [Pcty_arrow(lbl, T, CT)] represents:\n\n - [T -> CT] when [lbl] is {{!Asttypes.arg_label.Nolabel} [Nolabel]},\n - [~l:T -> CT] when [lbl] is\n {{!Asttypes.arg_label.Labelled} [Labelled l]},\n - [?l:T -> CT] when [lbl] is\n {{!Asttypes.arg_label.Optional} [Optional l]}. "]valpcty_signature:loc:Location.t->class_signature->class_type[@@ocaml.doc" [pcty_signature] constructs an {! Ast.Pcty_signature}\n\n{b Example OCaml}\n\n [object ... end] "]valpcty_constr:loc:Location.t->longidentloc->core_typelist->class_type[@@ocaml.doc" [pcty_constr] constructs an {! Ast.Pcty_constr}\n\n{b Example OCaml}\n\n - [c]\n - [['a1, ..., 'an] c] "][@@@ocaml.text"{2 Class structure}"]valclass_structure:self:pattern->fields:class_fieldlist->class_structure[@@ocaml.doc" [class_structure] constructs an {! Ast.class_structure}\n\n{b Example OCaml}\n\n Values of type {!class_structure} represents:\n\n - [object(selfpat) ... end]\n - [object ... end] when {{!class_structure.pcstr_self} [pcstr_self]} is\n {{!pattern_desc.Ppat_any} [Ppat_any]} "][@@@ocaml.text"{2 Class signature}"]valclass_signature:self:core_type->fields:class_type_fieldlist->class_signature[@@ocaml.doc" [class_signature] constructs an {! Ast.class_signature}\n\n{b Example OCaml}\n\n Values of type [class_signature] represents:\n\n - [object('selfpat) ... end]\n - [object ... end] when {{!class_signature.pcsig_self} [pcsig_self]} is\n {{!core_type_desc.Ptyp_any} [Ptyp_any]} "][@@@ocaml.text"{2 Class field}"]valpcf_extension:loc:Location.t->extension->class_field[@@ocaml.doc" [pcf_extension] constructs an {! Ast.Pcf_extension}\n\n{b Example OCaml}\n\n [[%%id]] "]valpcf_attribute:loc:Location.t->attribute->class_field[@@ocaml.doc" [pcf_attribute] constructs an {! Ast.Pcf_attribute}\n\n{b Example OCaml}\n\n [[@@@id]] "]valpcf_initializer:loc:Location.t->expression->class_field[@@ocaml.doc" [pcf_initializer] constructs an {! Ast.Pcf_initializer}\n\n{b Example OCaml}\n\n [initializer E] "]valpcf_constraint:loc:Location.t->(core_type*core_type)->class_field[@@ocaml.doc" [pcf_constraint] constructs an {! Ast.Pcf_constraint}\n\n{b Example OCaml}\n\n [constraint T1 = T2] "]valpcf_method:loc:Location.t->(labelloc*private_flag*class_field_kind)->class_field[@@ocaml.doc" [pcf_method] constructs an {! Ast.Pcf_method}\n\n{b Example OCaml}\n\n - [method x = E] ([E] can be a\n {{!expression_desc.Pexp_poly} [Pexp_poly]})\n - [method virtual x: T] ([T] can be a\n {{!core_type_desc.Ptyp_poly} [Ptyp_poly]}) "]valpcf_val:loc:Location.t->(labelloc*mutable_flag*class_field_kind)->class_field[@@ocaml.doc" [pcf_val] constructs an {! Ast.Pcf_val}\n\n{b Example OCaml}\n\n [Pcf_val(x,flag, kind)] represents:\n\n - [val x = E] when [flag] is\n {{!Asttypes.mutable_flag.Immutable} [Immutable]} and [kind] is\n {{!class_field_kind.Cfk_concrete} [Cfk_concrete(Fresh, E)]}\n - [val virtual x: T] when [flag] is\n {{!Asttypes.mutable_flag.Immutable} [Immutable]} and [kind] is\n {{!class_field_kind.Cfk_virtual} [Cfk_virtual(T)]}\n - [val mutable x = E] when [flag] is\n {{!Asttypes.mutable_flag.Mutable} [Mutable]} and [kind] is\n {{!class_field_kind.Cfk_concrete} [Cfk_concrete(Fresh, E)]}\n - [val mutable virtual x: T] when [flag] is\n {{!Asttypes.mutable_flag.Mutable} [Mutable]} and [kind] is\n {{!class_field_kind.Cfk_virtual} [Cfk_virtual(T)]} "]valpcf_inherit:loc:Location.t->override_flag->class_expr->stringlocoption->class_field[@@ocaml.doc" [pcf_inherit] constructs an {! Ast.Pcf_inherit}\n\n{b Example OCaml}\n\n [Pcf_inherit(flag, CE, s)] represents:\n\n - [inherit CE] when [flag] is\n {{!Asttypes.override_flag.Fresh} [Fresh]} and [s] is [None],\n - [inherit CE as x] when [flag] is\n {{!Asttypes.override_flag.Fresh} [Fresh]} and [s] is [Some x],\n - [inherit! CE] when [flag] is\n {{!Asttypes.override_flag.Override} [Override]} and [s] is [None],\n - [inherit! CE as x] when [flag] is\n {{!Asttypes.override_flag.Override} [Override]} and [s] is [Some x]\n "][@@@ocaml.text"{2 Class expr}"]valpcl_open:loc:Location.t->open_description->class_expr->class_expr[@@ocaml.doc" [pcl_open] constructs an {! Ast.Pcl_open}\n\n{b Example OCaml}\n\n [let open M in CE] "]valpcl_extension:loc:Location.t->extension->class_expr[@@ocaml.doc" [pcl_extension] constructs an {! Ast.Pcl_extension}\n\n{b Example OCaml}\n\n [[%id]] "]valpcl_constraint:loc:Location.t->class_expr->class_type->class_expr[@@ocaml.doc" [pcl_constraint] constructs an {! Ast.Pcl_constraint}\n\n{b Example OCaml}\n\n [(CE : CT)] "]valpcl_let:loc:Location.t->rec_flag->value_bindinglist->class_expr->class_expr[@@ocaml.doc" [pcl_let] constructs an {! Ast.Pcl_let}\n\n{b Example OCaml}\n\n [Pcl_let(rec, [(P1, E1); ... ; (Pn, En)], CE)] represents:\n\n - [let P1 = E1 and ... and Pn = EN in CE] when [rec] is\n {{!Asttypes.rec_flag.Nonrecursive} [Nonrecursive]},\n - [let rec P1 = E1 and ... and Pn = EN in CE] when [rec] is\n {{!Asttypes.rec_flag.Recursive} [Recursive]}. "]valpcl_apply:loc:Location.t->class_expr->(arg_label*expression)list->class_expr[@@ocaml.doc" [pcl_apply] constructs an {! Ast.Pcl_apply}\n\n{b Example OCaml}\n\n [Pcl_apply(CE, [(l1,E1) ; ... ; (ln,En)])] represents\n [CE ~l1:E1 ... ~ln:En]. [li] can be empty (non labeled argument) or\n start with [?] (optional argument).\n\n Invariant: [n > 0] "]valpcl_fun:loc:Location.t->arg_label->expressionoption->pattern->class_expr->class_expr[@@ocaml.doc" [pcl_fun] constructs an {! Ast.Pcl_fun}\n\n{b Example OCaml}\n\n [Pcl_fun(lbl, exp0, P, CE)] represents:\n\n - [fun P -> CE] when [lbl] is\n {{!Asttypes.arg_label.Nolabel} [Nolabel]} and [exp0] is [None],\n - [fun ~l:P -> CE] when [lbl] is\n {{!Asttypes.arg_label.Labelled} [Labelled l]} and [exp0] is [None],\n - [fun ?l:P -> CE] when [lbl] is\n {{!Asttypes.arg_label.Optional} [Optional l]} and [exp0] is [None],\n - [fun ?l:(P = E0) -> CE] when [lbl] is\n {{!Asttypes.arg_label.Optional} [Optional l]} and [exp0] is\n [Some E0]. "]valpcl_structure:loc:Location.t->class_structure->class_expr[@@ocaml.doc" [pcl_structure] constructs an {! Ast.Pcl_structure}\n\n{b Example OCaml}\n\n [object ... end] "]valpcl_constr:loc:Location.t->longidentloc->core_typelist->class_expr[@@ocaml.doc" [pcl_constr] constructs an {! Ast.Pcl_constr}\n\n{b Example OCaml}\n\n [c] and [['a1, ..., 'an] c] "][@@@ocaml.text"{2 Case}"]valcase:lhs:pattern->guard:expressionoption->rhs:expression->case[@@ocaml.doc" [case] constructs an {! Ast.case}\n\n{b Example OCaml}\n\n Values of type {!case} represents [(P -> E)] or [(P when E0 -> E)] "][@@@ocaml.text"{2 Binding op}"]valbinding_op:loc:Location.t->op:stringloc->pat:pattern->exp:expression->binding_op[@@ocaml.doc" [binding_op] constructs an {! Ast.binding_op}\n\n "][@@@ocaml.text"{2 Attribute}"]valattribute:loc:Location.t->name:stringloc->payload:payload->attribute[@@ocaml.doc" [attribute] constructs an {! Ast.attribute}\n\n{b Example OCaml}\n\n Attributes such as [[@id ARG]] and [[@@id ARG]].\n\n Metadata containers passed around within the AST. The compiler ignores\n unknown attributes. "][@@@ocaml.text"{2 'a open infos}"]valopen_infos:loc:Location.t->expr:'a->override:override_flag->'aopen_infos[@@ocaml.doc" [open_infos] constructs an {! Ast.'a open_infos}\n\n{b Example OCaml}\n\n Values of type ['a open_infos] represents:\n\n - [open! X] when {{!open_infos.popen_override} [popen_override]} is\n {{!Asttypes.override_flag.Override} [Override]} (silences the \"used\n identifier shadowing\" warning)\n - [open X] when {{!open_infos.popen_override} [popen_override]} is\n {{!Asttypes.override_flag.Fresh} [Fresh]} "][@@@ocaml.text"{2 'a include infos}"]valinclude_infos:loc:Location.t->'a->'ainclude_infos[@@ocaml.doc" [include_infos] constructs an {! Ast.'a include_infos}\n\n "][@@@ocaml.text"{2 'a class infos}"]valclass_infos:loc:Location.t->virt:virtual_flag->params:(core_type*(variance*injectivity))list->name:stringloc->expr:'a->'aclass_infos[@@ocaml.doc" [class_infos] constructs an {! Ast.'a class_infos}\n\n{b Example OCaml}\n\n Values of type [class_expr class_infos] represents:\n\n - [class c = ...]\n - [class ['a1,...,'an] c = ...]\n - [class virtual c = ...]\n\n They are also used for \"class type\" declaration. "]endmoduletypeIntf_located=sigvalloc:Location.t[@@@ocaml.text"{2 Value description}"]valvalue_description:name:stringloc->type_:core_type->prim:stringlist->value_description[@@ocaml.doc" [value_description] constructs an {! Ast.value_description}\n\n{b Example OCaml}\n\n Values of type {!value_description} represents:\n\n - [val x: T], when {{!value_description.pval_prim} [pval_prim]} is [[]]\n - [external x: T = \"s1\" ... \"sn\"] when\n {{!value_description.pval_prim} [pval_prim]} is [[\"s1\";...\"sn\"]] "][@@@ocaml.text"{2 Value binding}"]valvalue_binding:pat:pattern->expr:expression->value_binding[@@ocaml.doc" [value_binding] constructs an {! Ast.value_binding}\n\n "][@@@ocaml.text"{2 Type extension}"]valtype_extension:path:longidentloc->params:(core_type*(variance*injectivity))list->constructors:extension_constructorlist->private_:private_flag->type_extension[@@ocaml.doc" [type_extension] constructs an {! Ast.type_extension}\n\n{b Example OCaml}\n\n Definition of new extensions constructors for the extensive sum type [t]\n ([type t += ...]). "][@@@ocaml.text"{2 Type exception}"]valtype_exception:extension_constructor->type_exception[@@ocaml.doc" [type_exception] constructs an {! Ast.type_exception}\n\n{b Example OCaml}\n\n Definition of a new exception ([exception E]). "][@@@ocaml.text"{2 Type declaration}"]valtype_declaration:name:stringloc->params:(core_type*(variance*injectivity))list->cstrs:(core_type*core_type*location)list->kind:type_kind->private_:private_flag->manifest:core_typeoption->type_declaration[@@ocaml.doc" [type_declaration] constructs an {! Ast.type_declaration}\n\n{b Example OCaml}\n\n Here are type declarations and their representation, for various\n {{!type_declaration.ptype_kind} [ptype_kind]} and\n {{!type_declaration.ptype_manifest} [ptype_manifest]} values:\n\n - [type t] when [type_kind] is\n {{!type_kind.Ptype_abstract} [Ptype_abstract]}, and [manifest] is [None],\n - [type t = T0] when [type_kind] is\n {{!type_kind.Ptype_abstract} [Ptype_abstract]}, and [manifest] is\n [Some T0],\n - [type t = C of T | ...] when [type_kind] is\n {{!type_kind.Ptype_variant} [Ptype_variant]}, and [manifest] is [None],\n - [type t = T0 = C of T | ...] when [type_kind] is\n {{!type_kind.Ptype_variant} [Ptype_variant]}, and [manifest] is [Some T0],\n - [type t = {l: T; ...}] when [type_kind] is\n {{!type_kind.Ptype_record} [Ptype_record]}, and [manifest] is [None],\n - [type t = T0 = {l : T; ...}] when [type_kind] is\n {{!type_kind.Ptype_record} [Ptype_record]}, and [manifest] is [Some T0],\n - [type t = ..] when [type_kind] is {{!type_kind.Ptype_open} [Ptype_open]},\n and [manifest] is [None]. "][@@@ocaml.text"{2 Toplevel directive}"]valtoplevel_directive:name:stringloc->arg:directive_argumentoption->toplevel_directive[@@ocaml.doc" [toplevel_directive] constructs an {! Ast.toplevel_directive}\n\n "][@@@ocaml.text"{2 Structure item}"]valpstr_extension:extension->attributes->structure_item[@@ocaml.doc" [pstr_extension] constructs an {! Ast.Pstr_extension}\n\n{b Example OCaml}\n\n [[%%id]] "]valpstr_attribute:attribute->structure_item[@@ocaml.doc" [pstr_attribute] constructs an {! Ast.Pstr_attribute}\n\n{b Example OCaml}\n\n [[@@@id]] "]valpstr_include:include_declaration->structure_item[@@ocaml.doc" [pstr_include] constructs an {! Ast.Pstr_include}\n\n{b Example OCaml}\n\n [include ME] "]valpstr_class_type:class_type_declarationlist->structure_item[@@ocaml.doc" [pstr_class_type] constructs an {! Ast.Pstr_class_type}\n\n{b Example OCaml}\n\n [class type ct1 = ... and ... and ctn = ...] "]valpstr_class:class_declarationlist->structure_item[@@ocaml.doc" [pstr_class] constructs an {! Ast.Pstr_class}\n\n{b Example OCaml}\n\n [class c1 = ... and ... and cn = ...] "]valpstr_open:open_declaration->structure_item[@@ocaml.doc" [pstr_open] constructs an {! Ast.Pstr_open}\n\n{b Example OCaml}\n\n [open X] "]valpstr_modtype:module_type_declaration->structure_item[@@ocaml.doc" [pstr_modtype] constructs an {! Ast.Pstr_modtype}\n\n{b Example OCaml}\n\n [module type S = MT] "]valpstr_recmodule:module_bindinglist->structure_item[@@ocaml.doc" [pstr_recmodule] constructs an {! Ast.Pstr_recmodule}\n\n{b Example OCaml}\n\n [module rec X1 = ME1 and ... and Xn = MEn] "]valpstr_module:module_binding->structure_item[@@ocaml.doc" [pstr_module] constructs an {! Ast.Pstr_module}\n\n{b Example OCaml}\n\n [module X = ME] "]valpstr_exception:type_exception->structure_item[@@ocaml.doc" [pstr_exception] constructs an {! Ast.Pstr_exception}\n\n{b Example OCaml}\n\n - [exception C of T]\n - [exception C = M.X] "]valpstr_typext:type_extension->structure_item[@@ocaml.doc" [pstr_typext] constructs an {! Ast.Pstr_typext}\n\n{b Example OCaml}\n\n [type t1 += ...] "]valpstr_type:rec_flag->type_declarationlist->structure_item[@@ocaml.doc" [pstr_type] constructs an {! Ast.Pstr_type}\n\n{b Example OCaml}\n\n [type t1 = ... and ... and tn = ...] "]valpstr_primitive:value_description->structure_item[@@ocaml.doc" [pstr_primitive] constructs an {! Ast.Pstr_primitive}\n\n{b Example OCaml}\n\n - [val x: T]\n - [external x: T = \"s1\" ... \"sn\" ] "]valpstr_value:rec_flag->value_bindinglist->structure_item[@@ocaml.doc" [pstr_value] constructs an {! Ast.Pstr_value}\n\n{b Example OCaml}\n\n [Pstr_value(rec, [(P1, E1 ; ... ; (Pn, En))])] represents:\n\n - [let P1 = E1 and ... and Pn = EN] when [rec] is\n {{!Asttypes.rec_flag.Nonrecursive} [Nonrecursive]},\n - [let rec P1 = E1 and ... and Pn = EN ] when [rec] is\n {{!Asttypes.rec_flag.Recursive} [Recursive]}. "]valpstr_eval:expression->attributes->structure_item[@@ocaml.doc" [pstr_eval] constructs an {! Ast.Pstr_eval}\n\n{b Example OCaml}\n\n [E] "][@@@ocaml.text"{2 Signature item}"]valpsig_extension:extension->attributes->signature_item[@@ocaml.doc" [psig_extension] constructs an {! Ast.Psig_extension}\n\n{b Example OCaml}\n\n [[%%id]] "]valpsig_attribute:attribute->signature_item[@@ocaml.doc" [psig_attribute] constructs an {! Ast.Psig_attribute}\n\n{b Example OCaml}\n\n [[@@@id]] "]valpsig_class_type:class_type_declarationlist->signature_item[@@ocaml.doc" [psig_class_type] constructs an {! Ast.Psig_class_type}\n\n{b Example OCaml}\n\n [class type ct1 = ... and ... and ctn = ...] "]valpsig_class:class_descriptionlist->signature_item[@@ocaml.doc" [psig_class] constructs an {! Ast.Psig_class}\n\n{b Example OCaml}\n\n [class c1 : ... and ... and cn : ...] "]valpsig_include:include_description->signature_item[@@ocaml.doc" [psig_include] constructs an {! Ast.Psig_include}\n\n{b Example OCaml}\n\n [include MT] "]valpsig_open:open_description->signature_item[@@ocaml.doc" [psig_open] constructs an {! Ast.Psig_open}\n\n{b Example OCaml}\n\n [open X] "]valpsig_modtypesubst:module_type_declaration->signature_item[@@ocaml.doc" [psig_modtypesubst] constructs an {! Ast.Psig_modtypesubst}\n\n{b Example OCaml}\n\n [module type S := ...] "]valpsig_modtype:module_type_declaration->signature_item[@@ocaml.doc" [psig_modtype] constructs an {! Ast.Psig_modtype}\n\n{b Example OCaml}\n\n [module type S = MT] and [module type S] "]valpsig_recmodule:module_declarationlist->signature_item[@@ocaml.doc" [psig_recmodule] constructs an {! Ast.Psig_recmodule}\n\n{b Example OCaml}\n\n [module rec X1 : MT1 and ... and Xn : MTn] "]valpsig_modsubst:module_substitution->signature_item[@@ocaml.doc" [psig_modsubst] constructs an {! Ast.Psig_modsubst}\n\n{b Example OCaml}\n\n [module X := M] "]valpsig_module:module_declaration->signature_item[@@ocaml.doc" [psig_module] constructs an {! Ast.Psig_module}\n\n{b Example OCaml}\n\n [module X = M] and [module X : MT] "]valpsig_exception:type_exception->signature_item[@@ocaml.doc" [psig_exception] constructs an {! Ast.Psig_exception}\n\n{b Example OCaml}\n\n [exception C of T] "]valpsig_typext:type_extension->signature_item[@@ocaml.doc" [psig_typext] constructs an {! Ast.Psig_typext}\n\n{b Example OCaml}\n\n [type t1 += ...] "]valpsig_typesubst:type_declarationlist->signature_item[@@ocaml.doc" [psig_typesubst] constructs an {! Ast.Psig_typesubst}\n\n{b Example OCaml}\n\n [type t1 := ... and ... and tn := ...] "]valpsig_type:rec_flag->type_declarationlist->signature_item[@@ocaml.doc" [psig_type] constructs an {! Ast.Psig_type}\n\n{b Example OCaml}\n\n [type t1 = ... and ... and tn = ...] "]valpsig_value:value_description->signature_item[@@ocaml.doc" [psig_value] constructs an {! Ast.Psig_value}\n\n{b Example OCaml}\n\n - [val x: T]\n - [external x: T = \"s1\" ... \"sn\"] "][@@@ocaml.text"{2 Row field}"]valrinherit:core_type->row_field[@@ocaml.doc" [rinherit] constructs an {! Ast.Rinherit}\n\n{b Example OCaml}\n\n [[ | t ]] "]valrtag:labelloc->bool->core_typelist->row_field[@@ocaml.doc" [rtag] constructs an {! Ast.Rtag}\n\n{b Example OCaml}\n\n [Rtag(`A, b, l)] represents:\n\n - [`A] when [b] is [true] and [l] is [[]],\n - [`A of T] when [b] is [false] and [l] is [[T]],\n - [`A of T1 & .. & Tn] when [b] is [false] and [l] is [[T1;...Tn]],\n - [`A of & T1 & .. & Tn] when [b] is [true] and [l] is [[T1;...Tn]].\n\n - The [bool] field is true if the tag contains a constant (empty)\n constructor.\n - [&] occurs when several types are used for the same constructor (see\n 4.2 in the manual) "][@@@ocaml.text"{2 Position}"]valposition:fname:string->lnum:int->bol:int->cnum:int->position[@@ocaml.doc" [position] constructs an {! Ast.position}\n\n "][@@@ocaml.text"{2 Pattern}"]valppat_open:longidentloc->pattern->pattern[@@ocaml.doc" [ppat_open] constructs an {! Ast.Ppat_open}\n\n{b Example OCaml}\n\n Pattern [M.(P)] "]valppat_extension:extension->pattern[@@ocaml.doc" [ppat_extension] constructs an {! Ast.Ppat_extension}\n\n{b Example OCaml}\n\n Pattern [[%id]] "]valppat_exception:pattern->pattern[@@ocaml.doc" [ppat_exception] constructs an {! Ast.Ppat_exception}\n\n{b Example OCaml}\n\n Pattern [exception P] "]valppat_unpack:stringoptionloc->pattern[@@ocaml.doc" [ppat_unpack] constructs an {! Ast.Ppat_unpack}\n\n{b Example OCaml}\n\n [Ppat_unpack(s)] represents:\n\n - [(module P)] when [s] is [Some \"P\"]\n - [(module _)] when [s] is [None]\n\n Note: [(module P : S)] is represented as\n [Ppat_constraint(Ppat_unpack(Some \"P\"), Ptyp_package S)] "]valppat_lazy:pattern->pattern[@@ocaml.doc" [ppat_lazy] constructs an {! Ast.Ppat_lazy}\n\n{b Example OCaml}\n\n Pattern [lazy P] "]valppat_type:longidentloc->pattern[@@ocaml.doc" [ppat_type] constructs an {! Ast.Ppat_type}\n\n{b Example OCaml}\n\n Pattern [#tconst] "]valppat_constraint:pattern->core_type->pattern[@@ocaml.doc" [ppat_constraint] constructs an {! Ast.Ppat_constraint}\n\n{b Example OCaml}\n\n Pattern [(P : T)] "]valppat_or:pattern->pattern->pattern[@@ocaml.doc" [ppat_or] constructs an {! Ast.Ppat_or}\n\n{b Example OCaml}\n\n Pattern [P1 | P2] "]valppat_array:patternlist->pattern[@@ocaml.doc" [ppat_array] constructs an {! Ast.Ppat_array}\n\n{b Example OCaml}\n\n Pattern [[| P1; ...; Pn |]] "]valppat_record:(longidentloc*pattern)list->closed_flag->pattern[@@ocaml.doc" [ppat_record] constructs an {! Ast.Ppat_record}\n\n{b Example OCaml}\n\n [Ppat_record([(l1, P1) ; ... ; (ln, Pn)], flag)] represents:\n\n - [{ l1=P1; ...; ln=Pn }] when [flag] is\n {{!Asttypes.closed_flag.Closed} [Closed]}\n - [{ l1=P1; ...; ln=Pn; _}] when [flag] is\n {{!Asttypes.closed_flag.Open} [Open]}\n\n Invariant: [n > 0] "]valppat_variant:label->patternoption->pattern[@@ocaml.doc" [ppat_variant] constructs an {! Ast.Ppat_variant}\n\n{b Example OCaml}\n\n [Ppat_variant(`A, pat)] represents:\n\n - [`A] when [pat] is [None],\n - [`A P] when [pat] is [Some P] "]valppat_construct:longidentloc->(stringloclist*pattern)option->pattern[@@ocaml.doc" [ppat_construct] constructs an {! Ast.Ppat_construct}\n\n{b Example OCaml}\n\n [Ppat_construct(C, args)] represents:\n\n - [C] when [args] is [None],\n - [C P] when [args] is [Some ([], P)]\n - [C (P1, ..., Pn)] when [args] is\n [Some ([], Ppat_tuple [P1; ...; Pn])]\n - [C (type a b) P] when [args] is [Some ([a; b], P)] "]valppat_tuple:patternlist->pattern[@@ocaml.doc" [ppat_tuple] constructs an {! Ast.Ppat_tuple}\n\n{b Example OCaml}\n\n Patterns [(P1, ..., Pn)].\n\n Invariant: [n >= 2] "]valppat_interval:constant->constant->pattern[@@ocaml.doc" [ppat_interval] constructs an {! Ast.Ppat_interval}\n\n{b Example OCaml}\n\n Patterns such as ['a'..'z'].\n\n Other forms of interval are recognized by the parser but rejected by\n the type-checker. "]valppat_constant:constant->pattern[@@ocaml.doc" [ppat_constant] constructs an {! Ast.Ppat_constant}\n\n{b Example OCaml}\n\n Patterns such as [1], ['a'], [\"true\"], [1.0], [1l], [1L], [1n] "]valppat_alias:pattern->stringloc->pattern[@@ocaml.doc" [ppat_alias] constructs an {! Ast.Ppat_alias}\n\n{b Example OCaml}\n\n An alias pattern such as [P as 'a] "]valppat_var:stringloc->pattern[@@ocaml.doc" [ppat_var] constructs an {! Ast.Ppat_var}\n\n{b Example OCaml}\n\n A variable pattern such as [x] "]valppat_any:pattern[@@ocaml.doc" [ppat_any] constructs an {! Ast.Ppat_any}\n\n{b Example OCaml}\n\n The pattern [_]. "][@@@ocaml.text"{2 Object field}"]valoinherit:core_type->object_field[@@ocaml.doc" [oinherit] constructs an {! Ast.Oinherit}\n\n "]valotag:labelloc->core_type->object_field[@@ocaml.doc" [otag] constructs an {! Ast.Otag}\n\n "][@@@ocaml.text"{2 Module type declaration}"]valmodule_type_declaration:name:stringloc->type_:module_typeoption->module_type_declaration[@@ocaml.doc" [module_type_declaration] constructs an {! Ast.module_type_declaration}\n\n{b Example OCaml}\n\n Values of type [module_type_declaration] represents:\n\n - [S = MT],\n - [S] for abstract module type declaration, when\n {{!module_type_declaration.pmtd_type} [pmtd_type]} is [None]. "][@@@ocaml.text"{2 Module type}"]valpmty_alias:longidentloc->module_type[@@ocaml.doc" [pmty_alias] constructs an {! Ast.Pmty_alias}\n\n{b Example OCaml}\n\n [(module M)] "]valpmty_extension:extension->module_type[@@ocaml.doc" [pmty_extension] constructs an {! Ast.Pmty_extension}\n\n{b Example OCaml}\n\n [[%id]] "]valpmty_typeof:module_expr->module_type[@@ocaml.doc" [pmty_typeof] constructs an {! Ast.Pmty_typeof}\n\n{b Example OCaml}\n\n [module type of ME] "]valpmty_with:module_type->with_constraintlist->module_type[@@ocaml.doc" [pmty_with] constructs an {! Ast.Pmty_with}\n\n{b Example OCaml}\n\n [MT with ...] "]valpmty_functor:functor_parameter->module_type->module_type[@@ocaml.doc" [pmty_functor] constructs an {! Ast.Pmty_functor}\n\n{b Example OCaml}\n\n [functor(X : MT1) -> MT2] "]valpmty_signature:signature->module_type[@@ocaml.doc" [pmty_signature] constructs an {! Ast.Pmty_signature}\n\n{b Example OCaml}\n\n [sig ... end] "]valpmty_ident:longidentloc->module_type[@@ocaml.doc" [pmty_ident] constructs an {! Ast.Pmty_ident}\n\n{b Example OCaml}\n\n [Pmty_ident(S)] represents [S] "][@@@ocaml.text"{2 Module substitution}"]valmodule_substitution:name:stringloc->manifest:longidentloc->module_substitution[@@ocaml.doc" [module_substitution] constructs an {! Ast.module_substitution}\n\n{b Example OCaml}\n\n Values of type [module_substitution] represents [S := M] "][@@@ocaml.text"{2 Module expr}"]valpmod_extension:extension->module_expr[@@ocaml.doc" [pmod_extension] constructs an {! Ast.Pmod_extension}\n\n{b Example OCaml}\n\n [[%id]] "]valpmod_unpack:expression->module_expr[@@ocaml.doc" [pmod_unpack] constructs an {! Ast.Pmod_unpack}\n\n{b Example OCaml}\n\n [(val E)] "]valpmod_constraint:module_expr->module_type->module_expr[@@ocaml.doc" [pmod_constraint] constructs an {! Ast.Pmod_constraint}\n\n{b Example OCaml}\n\n [(ME : MT)] "]valpmod_apply:module_expr->module_expr->module_expr[@@ocaml.doc" [pmod_apply] constructs an {! Ast.Pmod_apply}\n\n{b Example OCaml}\n\n [ME1(ME2)] "]valpmod_functor:functor_parameter->module_expr->module_expr[@@ocaml.doc" [pmod_functor] constructs an {! Ast.Pmod_functor}\n\n{b Example OCaml}\n\n [functor(X : MT1) -> ME] "]valpmod_structure:structure->module_expr[@@ocaml.doc" [pmod_structure] constructs an {! Ast.Pmod_structure}\n\n{b Example OCaml}\n\n [struct ... end] "]valpmod_ident:longidentloc->module_expr[@@ocaml.doc" [pmod_ident] constructs an {! Ast.Pmod_ident}\n\n{b Example OCaml}\n\n [X] "][@@@ocaml.text"{2 Module declaration}"]valmodule_declaration:name:stringoptionloc->type_:module_type->module_declaration[@@ocaml.doc" [module_declaration] constructs an {! Ast.module_declaration}\n\n{b Example OCaml}\n\n Values of type [module_declaration] represents [S : MT] "][@@@ocaml.text"{2 Module binding}"]valmodule_binding:name:stringoptionloc->expr:module_expr->module_binding[@@ocaml.doc" [module_binding] constructs an {! Ast.module_binding}\n\n{b Example OCaml}\n\n Values of type [module_binding] represents [module X = ME] "][@@@ocaml.text"{2 Location}"]vallocation:start:position->end_:position->ghost:bool->location[@@ocaml.doc" [location] constructs an {! Ast.location}\n\n "][@@@ocaml.text"{2 Letop}"]valletop:let_:binding_op->ands:binding_oplist->body:expression->letop[@@ocaml.doc" [letop] constructs an {! Ast.letop}\n\n "][@@@ocaml.text"{2 Label declaration}"]vallabel_declaration:name:stringloc->mutable_:mutable_flag->type_:core_type->label_declaration[@@ocaml.doc" [label_declaration] constructs an {! Ast.label_declaration}\n\n{b Example OCaml}\n\n - [{ ...; l: T; ... }] when {{!label_declaration.pld_mutable} [pld_mutable]}\n is {{!Asttypes.mutable_flag.Immutable} [Immutable]},\n - [{ ...; mutable l: T; ... }] when\n {{!label_declaration.pld_mutable} [pld_mutable]} is\n {{!Asttypes.mutable_flag.Mutable} [Mutable]}.\n\n Note: [T] can be a {{!core_type_desc.Ptyp_poly} [Ptyp_poly]}. "][@@@ocaml.text"{2 Extension constructor}"]valextension_constructor:name:stringloc->kind:extension_constructor_kind->extension_constructor[@@ocaml.doc" [extension_constructor] constructs an {! Ast.extension_constructor}\n\n "][@@@ocaml.text"{2 Expression}"]valpexp_unreachable:expression[@@ocaml.doc" [pexp_unreachable] constructs an {! Ast.Pexp_unreachable}\n\n{b Example OCaml}\n\n [.] "]valpexp_extension:extension->expression[@@ocaml.doc" [pexp_extension] constructs an {! Ast.Pexp_extension}\n\n{b Example OCaml}\n\n [[%id]] "]valpexp_letop:letop->expression[@@ocaml.doc" [pexp_letop] constructs an {! Ast.Pexp_letop}\n\n{b Example OCaml}\n\n - [let* P = E0 in E1]\n - [let* P0 = E00 and* P1 = E01 in E1] "]valpexp_open:open_declaration->expression->expression[@@ocaml.doc" [pexp_open] constructs an {! Ast.Pexp_open}\n\n{b Example OCaml}\n\n - [M.(E)]\n - [let open M in E]\n - [let open! M in E] "]valpexp_pack:module_expr->expression[@@ocaml.doc" [pexp_pack] constructs an {! Ast.Pexp_pack}\n\n{b Example OCaml}\n\n [(module ME)].\n\n [(module ME : S)] is represented as\n [Pexp_constraint(Pexp_pack ME, Ptyp_package S)] "]valpexp_newtype:stringloc->expression->expression[@@ocaml.doc" [pexp_newtype] constructs an {! Ast.Pexp_newtype}\n\n{b Example OCaml}\n\n [fun (type t) -> E] "]valpexp_object:class_structure->expression[@@ocaml.doc" [pexp_object] constructs an {! Ast.Pexp_object}\n\n{b Example OCaml}\n\n [object ... end] "]valpexp_poly:expression->core_typeoption->expression[@@ocaml.doc" [pexp_poly] constructs an {! Ast.Pexp_poly}\n\n{b Example OCaml}\n\n Used for method bodies.\n\n Can only be used as the expression under\n {{!class_field_kind.Cfk_concrete} [Cfk_concrete]} for methods (not\n values). "]valpexp_lazy:expression->expression[@@ocaml.doc" [pexp_lazy] constructs an {! Ast.Pexp_lazy}\n\n{b Example OCaml}\n\n [lazy E] "]valpexp_assert:expression->expression[@@ocaml.doc" [pexp_assert] constructs an {! Ast.Pexp_assert}\n\n{b Example OCaml}\n\n [assert E].\n\n Note: [assert false] is treated in a special way by the type-checker.\n "]valpexp_letexception:extension_constructor->expression->expression[@@ocaml.doc" [pexp_letexception] constructs an {! Ast.Pexp_letexception}\n\n{b Example OCaml}\n\n [let exception C in E] "]valpexp_letmodule:stringoptionloc->module_expr->expression->expression[@@ocaml.doc" [pexp_letmodule] constructs an {! Ast.Pexp_letmodule}\n\n{b Example OCaml}\n\n [let module M = ME in E] "]valpexp_override:(labelloc*expression)list->expression[@@ocaml.doc" [pexp_override] constructs an {! Ast.Pexp_override}\n\n{b Example OCaml}\n\n [{< x1 = E1; ...; xn = En >}] "]valpexp_setinstvar:labelloc->expression->expression[@@ocaml.doc" [pexp_setinstvar] constructs an {! Ast.Pexp_setinstvar}\n\n{b Example OCaml}\n\n [x <- 2] "]valpexp_new:longidentloc->expression[@@ocaml.doc" [pexp_new] constructs an {! Ast.Pexp_new}\n\n{b Example OCaml}\n\n [new M.c] "]valpexp_send:expression->labelloc->expression[@@ocaml.doc" [pexp_send] constructs an {! Ast.Pexp_send}\n\n{b Example OCaml}\n\n [E # m] "]valpexp_coerce:expression->core_typeoption->core_type->expression[@@ocaml.doc" [pexp_coerce] constructs an {! Ast.Pexp_coerce}\n\n{b Example OCaml}\n\n [Pexp_coerce(E, from, T)] represents\n\n - [(E :> T)] when [from] is [None],\n - [(E : T0 :> T)] when [from] is [Some T0]. "]valpexp_constraint:expression->core_type->expression[@@ocaml.doc" [pexp_constraint] constructs an {! Ast.Pexp_constraint}\n\n{b Example OCaml}\n\n [(E : T)] "]valpexp_for:pattern->expression->expression->direction_flag->expression->expression[@@ocaml.doc" [pexp_for] constructs an {! Ast.Pexp_for}\n\n{b Example OCaml}\n\n [Pexp_for(i, E1, E2, direction, E3)] represents:\n\n - [for i = E1 to E2 do E3 done] when [direction] is\n {{!Asttypes.direction_flag.Upto} [Upto]}\n - [for i = E1 downto E2 do E3 done] when [direction] is\n {{!Asttypes.direction_flag.Downto} [Downto]} "]valpexp_while:expression->expression->expression[@@ocaml.doc" [pexp_while] constructs an {! Ast.Pexp_while}\n\n{b Example OCaml}\n\n [while E1 do E2 done] "]valpexp_sequence:expression->expression->expression[@@ocaml.doc" [pexp_sequence] constructs an {! Ast.Pexp_sequence}\n\n{b Example OCaml}\n\n [E1; E2] "]valpexp_ifthenelse:expression->expression->expressionoption->expression[@@ocaml.doc" [pexp_ifthenelse] constructs an {! Ast.Pexp_ifthenelse}\n\n{b Example OCaml}\n\n [if E1 then E2 else E3] "]valpexp_array:expressionlist->expression[@@ocaml.doc" [pexp_array] constructs an {! Ast.Pexp_array}\n\n{b Example OCaml}\n\n [[| E1; ...; En |]] "]valpexp_setfield:expression->longidentloc->expression->expression[@@ocaml.doc" [pexp_setfield] constructs an {! Ast.Pexp_setfield}\n\n{b Example OCaml}\n\n [E1.l <- E2] "]valpexp_field:expression->longidentloc->expression[@@ocaml.doc" [pexp_field] constructs an {! Ast.Pexp_field}\n\n{b Example OCaml}\n\n [E.l] "]valpexp_record:(longidentloc*expression)list->expressionoption->expression[@@ocaml.doc" [pexp_record] constructs an {! Ast.Pexp_record}\n\n{b Example OCaml}\n\n [Pexp_record([(l1,P1) ; ... ; (ln,Pn)], exp0)] represents\n\n - [{ l1=P1; ...; ln=Pn }] when [exp0] is [None]\n - [{ E0 with l1=P1; ...; ln=Pn }] when [exp0] is [Some E0]\n\n Invariant: [n > 0] "]valpexp_variant:label->expressionoption->expression[@@ocaml.doc" [pexp_variant] constructs an {! Ast.Pexp_variant}\n\n{b Example OCaml}\n\n [Pexp_variant(`A, exp)] represents\n\n - [`A] when [exp] is [None]\n - [`A E] when [exp] is [Some E] "]valpexp_construct:longidentloc->expressionoption->expression[@@ocaml.doc" [pexp_construct] constructs an {! Ast.Pexp_construct}\n\n{b Example OCaml}\n\n [Pexp_construct(C, exp)] represents:\n\n - [C] when [exp] is [None],\n - [C E] when [exp] is [Some E],\n - [C (E1, ..., En)] when [exp] is [Some (Pexp_tuple[E1;...;En])] "]valpexp_tuple:expressionlist->expression[@@ocaml.doc" [pexp_tuple] constructs an {! Ast.Pexp_tuple}\n\n{b Example OCaml}\n\n Expressions [(E1, ..., En)]\n\n Invariant: [n >= 2] "]valpexp_try:expression->cases->expression[@@ocaml.doc" [pexp_try] constructs an {! Ast.Pexp_try}\n\n{b Example OCaml}\n\n [try E0 with P1 -> E1 | ... | Pn -> En] "]valpexp_match:expression->cases->expression[@@ocaml.doc" [pexp_match] constructs an {! Ast.Pexp_match}\n\n{b Example OCaml}\n\n [match E0 with P1 -> E1 | ... | Pn -> En] "]valpexp_apply:expression->(arg_label*expression)list->expression[@@ocaml.doc" [pexp_apply] constructs an {! Ast.Pexp_apply}\n\n{b Example OCaml}\n\n [Pexp_apply(E0, [(l1, E1) ; ... ; (ln, En)])] represents\n [E0 ~l1:E1 ... ~ln:En]\n\n [li] can be {{!Asttypes.arg_label.Nolabel} [Nolabel]} (non labeled\n argument), {{!Asttypes.arg_label.Labelled} [Labelled]} (labelled\n arguments) or {{!Asttypes.arg_label.Optional} [Optional]} (optional\n argument).\n\n Invariant: [n > 0] "]valpexp_fun:arg_label->expressionoption->pattern->expression->expression[@@ocaml.doc" [pexp_fun] constructs an {! Ast.Pexp_fun}\n\n{b Example OCaml}\n\n [Pexp_fun(lbl, exp0, P, E1)] represents:\n\n - [fun P -> E1] when [lbl] is\n {{!Asttypes.arg_label.Nolabel} [Nolabel]} and [exp0] is [None]\n - [fun ~l:P -> E1] when [lbl] is\n {{!Asttypes.arg_label.Labelled} [Labelled l]} and [exp0] is [None]\n - [fun ?l:P -> E1] when [lbl] is\n {{!Asttypes.arg_label.Optional} [Optional l]} and [exp0] is [None]\n - [fun ?l:(P = E0) -> E1] when [lbl] is\n {{!Asttypes.arg_label.Optional} [Optional l]} and [exp0] is\n [Some E0]\n\n Notes:\n\n - If [E0] is provided, only\n {{!Asttypes.arg_label.Optional} [Optional]} is allowed.\n - [fun P1 P2 .. Pn -> E1] is represented as nested\n {{!expression_desc.Pexp_fun} [Pexp_fun]}.\n - [let f P = E] is represented using\n {{!expression_desc.Pexp_fun} [Pexp_fun]}. "]valpexp_function:cases->expression[@@ocaml.doc" [pexp_function] constructs an {! Ast.Pexp_function}\n\n{b Example OCaml}\n\n [function P1 -> E1 | ... | Pn -> En] "]valpexp_let:rec_flag->value_bindinglist->expression->expression[@@ocaml.doc" [pexp_let] constructs an {! Ast.Pexp_let}\n\n{b Example OCaml}\n\n [Pexp_let(flag, [(P1,E1) ; ... ; (Pn,En)], E)] represents:\n\n - [let P1 = E1 and ... and Pn = EN in E] when [flag] is\n {{!Asttypes.rec_flag.Nonrecursive} [Nonrecursive]},\n - [let rec P1 = E1 and ... and Pn = EN in E] when [flag] is\n {{!Asttypes.rec_flag.Recursive} [Recursive]}. "]valpexp_constant:constant->expression[@@ocaml.doc" [pexp_constant] constructs an {! Ast.Pexp_constant}\n\n{b Example OCaml}\n\n Expressions constant such as [1], ['a'], [\"true\"], [1.0], [1l], [1L],\n [1n] "]valpexp_ident:longidentloc->expression[@@ocaml.doc" [pexp_ident] constructs an {! Ast.Pexp_ident}\n\n{b Example OCaml}\n\n Identifiers such as [x] and [M.x] "][@@@ocaml.text"{2 Directive argument}"]valpdir_bool:bool->directive_argument[@@ocaml.doc" [pdir_bool] constructs an {! Ast.Pdir_bool}\n\n "]valpdir_ident:longident->directive_argument[@@ocaml.doc" [pdir_ident] constructs an {! Ast.Pdir_ident}\n\n "]valpdir_int:string->charoption->directive_argument[@@ocaml.doc" [pdir_int] constructs an {! Ast.Pdir_int}\n\n "]valpdir_string:string->directive_argument[@@ocaml.doc" [pdir_string] constructs an {! Ast.Pdir_string}\n\n "][@@@ocaml.text"{2 Core type}"]valptyp_extension:extension->core_type[@@ocaml.doc" [ptyp_extension] constructs an {! Ast.Ptyp_extension}\n\n{b Example OCaml}\n\n [[%id]]. "]valptyp_package:package_type->core_type[@@ocaml.doc" [ptyp_package] constructs an {! Ast.Ptyp_package}\n\n{b Example OCaml}\n\n [(module S)]. "]valptyp_poly:stringloclist->core_type->core_type[@@ocaml.doc" [ptyp_poly] constructs an {! Ast.Ptyp_poly}\n\n{b Example OCaml}\n\n ['a1 ... 'an. T]\n\n Can only appear in the following context:\n\n - As the {!core_type} of a\n {{!pattern_desc.Ppat_constraint} [Ppat_constraint]} node\n corresponding to a constraint on a let-binding:\n\n {[\n let x : 'a1 ... 'an. T = e ...\n ]}\n - Under {{!class_field_kind.Cfk_virtual} [Cfk_virtual]} for methods\n (not values).\n\n - As the {!core_type} of a\n {{!class_type_field_desc.Pctf_method} [Pctf_method]} node.\n\n - As the {!core_type} of a {{!expression_desc.Pexp_poly} [Pexp_poly]}\n node.\n\n - As the {{!label_declaration.pld_type} [pld_type]} field of a\n {!label_declaration}.\n\n - As a {!core_type} of a {{!core_type_desc.Ptyp_object} [Ptyp_object]}\n node.\n\n - As the {{!value_description.pval_type} [pval_type]} field of a\n {!value_description}. "]valptyp_variant:row_fieldlist->closed_flag->labellistoption->core_type[@@ocaml.doc" [ptyp_variant] constructs an {! Ast.Ptyp_variant}\n\n{b Example OCaml}\n\n [Ptyp_variant([`A;`B], flag, labels)] represents:\n\n - [[ `A|`B ]] when [flag] is\n {{!Asttypes.closed_flag.Closed} [Closed]}, and [labels] is [None],\n - [[> `A|`B ]] when [flag] is {{!Asttypes.closed_flag.Open} [Open]},\n and [labels] is [None],\n - [[< `A|`B ]] when [flag] is\n {{!Asttypes.closed_flag.Closed} [Closed]}, and [labels] is\n [Some []],\n - [[< `A|`B > `X `Y ]] when [flag] is\n {{!Asttypes.closed_flag.Closed} [Closed]}, and [labels] is\n [Some [\"X\";\"Y\"]]. "]valptyp_alias:core_type->string->core_type[@@ocaml.doc" [ptyp_alias] constructs an {! Ast.Ptyp_alias}\n\n{b Example OCaml}\n\n [T as 'a]. "]valptyp_class:longidentloc->core_typelist->core_type[@@ocaml.doc" [ptyp_class] constructs an {! Ast.Ptyp_class}\n\n{b Example OCaml}\n\n [Ptyp_class(tconstr, l)] represents:\n\n - [#tconstr] when [l=[]],\n - [T #tconstr] when [l=[T]],\n - [(T1, ..., Tn) #tconstr] when [l=[T1 ; ... ; Tn]]. "]valptyp_object:object_fieldlist->closed_flag->core_type[@@ocaml.doc" [ptyp_object] constructs an {! Ast.Ptyp_object}\n\n{b Example OCaml}\n\n [Ptyp_object([ l1:T1; ...; ln:Tn ], flag)] represents:\n\n - [< l1:T1; ...; ln:Tn >] when [flag] is\n {{!Asttypes.closed_flag.Closed} [Closed]},\n - [< l1:T1; ...; ln:Tn; .. >] when [flag] is\n {{!Asttypes.closed_flag.Open} [Open]}. "]valptyp_constr:longidentloc->core_typelist->core_type[@@ocaml.doc" [ptyp_constr] constructs an {! Ast.Ptyp_constr}\n\n{b Example OCaml}\n\n [Ptyp_constr(lident, l)] represents:\n\n - [tconstr] when [l=[]],\n - [T tconstr] when [l=[T]],\n - [(T1, ..., Tn) tconstr] when [l=[T1 ; ... ; Tn]]. "]valptyp_tuple:core_typelist->core_type[@@ocaml.doc" [ptyp_tuple] constructs an {! Ast.Ptyp_tuple}\n\n{b Example OCaml}\n\n [Ptyp_tuple([T1 ; ... ; Tn])] represents a product type\n [T1 * ... * Tn].\n\n Invariant: [n >= 2]. "]valptyp_arrow:arg_label->core_type->core_type->core_type[@@ocaml.doc" [ptyp_arrow] constructs an {! Ast.Ptyp_arrow}\n\n{b Example OCaml}\n\n [Ptyp_arrow(lbl, T1, T2)] represents:\n\n - [T1 -> T2] when [lbl] is {{!Asttypes.arg_label.Nolabel} [Nolabel]},\n - [~l:T1 -> T2] when [lbl] is\n {{!Asttypes.arg_label.Labelled} [Labelled]},\n - [?l:T1 -> T2] when [lbl] is\n {{!Asttypes.arg_label.Optional} [Optional]}. "]valptyp_var:string->core_type[@@ocaml.doc" [ptyp_var] constructs an {! Ast.Ptyp_var}\n\n{b Example OCaml}\n\n A type variable such as ['a] "]valptyp_any:core_type[@@ocaml.doc" [ptyp_any] constructs an {! Ast.Ptyp_any}\n\n{b Example OCaml}\n\n [_] "][@@@ocaml.text"{2 Constructor declaration}"]valconstructor_declaration:name:stringloc->vars:stringloclist->args:constructor_arguments->res:core_typeoption->constructor_declaration[@@ocaml.doc" [constructor_declaration] constructs an {! Ast.constructor_declaration}\n\n "][@@@ocaml.text"{2 Class type field}"]valpctf_extension:extension->class_type_field[@@ocaml.doc" [pctf_extension] constructs an {! Ast.Pctf_extension}\n\n{b Example OCaml}\n\n [[%%id]] "]valpctf_attribute:attribute->class_type_field[@@ocaml.doc" [pctf_attribute] constructs an {! Ast.Pctf_attribute}\n\n{b Example OCaml}\n\n [[@@@id]] "]valpctf_constraint:(core_type*core_type)->class_type_field[@@ocaml.doc" [pctf_constraint] constructs an {! Ast.Pctf_constraint}\n\n{b Example OCaml}\n\n [constraint T1 = T2] "]valpctf_method:(labelloc*private_flag*virtual_flag*core_type)->class_type_field[@@ocaml.doc" [pctf_method] constructs an {! Ast.Pctf_method}\n\n{b Example OCaml}\n\n [method x: T]\n\n Note: [T] can be a {{!core_type_desc.Ptyp_poly} [Ptyp_poly]}. "]valpctf_val:(labelloc*mutable_flag*virtual_flag*core_type)->class_type_field[@@ocaml.doc" [pctf_val] constructs an {! Ast.Pctf_val}\n\n{b Example OCaml}\n\n [val x: T] "]valpctf_inherit:class_type->class_type_field[@@ocaml.doc" [pctf_inherit] constructs an {! Ast.Pctf_inherit}\n\n{b Example OCaml}\n\n [inherit CT] "][@@@ocaml.text"{2 Class type}"]valpcty_open:open_description->class_type->class_type[@@ocaml.doc" [pcty_open] constructs an {! Ast.Pcty_open}\n\n{b Example OCaml}\n\n [let open M in CT] "]valpcty_extension:extension->class_type[@@ocaml.doc" [pcty_extension] constructs an {! Ast.Pcty_extension}\n\n{b Example OCaml}\n\n [%id] "]valpcty_arrow:arg_label->core_type->class_type->class_type[@@ocaml.doc" [pcty_arrow] constructs an {! Ast.Pcty_arrow}\n\n{b Example OCaml}\n\n [Pcty_arrow(lbl, T, CT)] represents:\n\n - [T -> CT] when [lbl] is {{!Asttypes.arg_label.Nolabel} [Nolabel]},\n - [~l:T -> CT] when [lbl] is\n {{!Asttypes.arg_label.Labelled} [Labelled l]},\n - [?l:T -> CT] when [lbl] is\n {{!Asttypes.arg_label.Optional} [Optional l]}. "]valpcty_signature:class_signature->class_type[@@ocaml.doc" [pcty_signature] constructs an {! Ast.Pcty_signature}\n\n{b Example OCaml}\n\n [object ... end] "]valpcty_constr:longidentloc->core_typelist->class_type[@@ocaml.doc" [pcty_constr] constructs an {! Ast.Pcty_constr}\n\n{b Example OCaml}\n\n - [c]\n - [['a1, ..., 'an] c] "][@@@ocaml.text"{2 Class structure}"]valclass_structure:self:pattern->fields:class_fieldlist->class_structure[@@ocaml.doc" [class_structure] constructs an {! Ast.class_structure}\n\n{b Example OCaml}\n\n Values of type {!class_structure} represents:\n\n - [object(selfpat) ... end]\n - [object ... end] when {{!class_structure.pcstr_self} [pcstr_self]} is\n {{!pattern_desc.Ppat_any} [Ppat_any]} "][@@@ocaml.text"{2 Class signature}"]valclass_signature:self:core_type->fields:class_type_fieldlist->class_signature[@@ocaml.doc" [class_signature] constructs an {! Ast.class_signature}\n\n{b Example OCaml}\n\n Values of type [class_signature] represents:\n\n - [object('selfpat) ... end]\n - [object ... end] when {{!class_signature.pcsig_self} [pcsig_self]} is\n {{!core_type_desc.Ptyp_any} [Ptyp_any]} "][@@@ocaml.text"{2 Class field}"]valpcf_extension:extension->class_field[@@ocaml.doc" [pcf_extension] constructs an {! Ast.Pcf_extension}\n\n{b Example OCaml}\n\n [[%%id]] "]valpcf_attribute:attribute->class_field[@@ocaml.doc" [pcf_attribute] constructs an {! Ast.Pcf_attribute}\n\n{b Example OCaml}\n\n [[@@@id]] "]valpcf_initializer:expression->class_field[@@ocaml.doc" [pcf_initializer] constructs an {! Ast.Pcf_initializer}\n\n{b Example OCaml}\n\n [initializer E] "]valpcf_constraint:(core_type*core_type)->class_field[@@ocaml.doc" [pcf_constraint] constructs an {! Ast.Pcf_constraint}\n\n{b Example OCaml}\n\n [constraint T1 = T2] "]valpcf_method:(labelloc*private_flag*class_field_kind)->class_field[@@ocaml.doc" [pcf_method] constructs an {! Ast.Pcf_method}\n\n{b Example OCaml}\n\n - [method x = E] ([E] can be a\n {{!expression_desc.Pexp_poly} [Pexp_poly]})\n - [method virtual x: T] ([T] can be a\n {{!core_type_desc.Ptyp_poly} [Ptyp_poly]}) "]valpcf_val:(labelloc*mutable_flag*class_field_kind)->class_field[@@ocaml.doc" [pcf_val] constructs an {! Ast.Pcf_val}\n\n{b Example OCaml}\n\n [Pcf_val(x,flag, kind)] represents:\n\n - [val x = E] when [flag] is\n {{!Asttypes.mutable_flag.Immutable} [Immutable]} and [kind] is\n {{!class_field_kind.Cfk_concrete} [Cfk_concrete(Fresh, E)]}\n - [val virtual x: T] when [flag] is\n {{!Asttypes.mutable_flag.Immutable} [Immutable]} and [kind] is\n {{!class_field_kind.Cfk_virtual} [Cfk_virtual(T)]}\n - [val mutable x = E] when [flag] is\n {{!Asttypes.mutable_flag.Mutable} [Mutable]} and [kind] is\n {{!class_field_kind.Cfk_concrete} [Cfk_concrete(Fresh, E)]}\n - [val mutable virtual x: T] when [flag] is\n {{!Asttypes.mutable_flag.Mutable} [Mutable]} and [kind] is\n {{!class_field_kind.Cfk_virtual} [Cfk_virtual(T)]} "]valpcf_inherit:override_flag->class_expr->stringlocoption->class_field[@@ocaml.doc" [pcf_inherit] constructs an {! Ast.Pcf_inherit}\n\n{b Example OCaml}\n\n [Pcf_inherit(flag, CE, s)] represents:\n\n - [inherit CE] when [flag] is\n {{!Asttypes.override_flag.Fresh} [Fresh]} and [s] is [None],\n - [inherit CE as x] when [flag] is\n {{!Asttypes.override_flag.Fresh} [Fresh]} and [s] is [Some x],\n - [inherit! CE] when [flag] is\n {{!Asttypes.override_flag.Override} [Override]} and [s] is [None],\n - [inherit! CE as x] when [flag] is\n {{!Asttypes.override_flag.Override} [Override]} and [s] is [Some x]\n "][@@@ocaml.text"{2 Class expr}"]valpcl_open:open_description->class_expr->class_expr[@@ocaml.doc" [pcl_open] constructs an {! Ast.Pcl_open}\n\n{b Example OCaml}\n\n [let open M in CE] "]valpcl_extension:extension->class_expr[@@ocaml.doc" [pcl_extension] constructs an {! Ast.Pcl_extension}\n\n{b Example OCaml}\n\n [[%id]] "]valpcl_constraint:class_expr->class_type->class_expr[@@ocaml.doc" [pcl_constraint] constructs an {! Ast.Pcl_constraint}\n\n{b Example OCaml}\n\n [(CE : CT)] "]valpcl_let:rec_flag->value_bindinglist->class_expr->class_expr[@@ocaml.doc" [pcl_let] constructs an {! Ast.Pcl_let}\n\n{b Example OCaml}\n\n [Pcl_let(rec, [(P1, E1); ... ; (Pn, En)], CE)] represents:\n\n - [let P1 = E1 and ... and Pn = EN in CE] when [rec] is\n {{!Asttypes.rec_flag.Nonrecursive} [Nonrecursive]},\n - [let rec P1 = E1 and ... and Pn = EN in CE] when [rec] is\n {{!Asttypes.rec_flag.Recursive} [Recursive]}. "]valpcl_apply:class_expr->(arg_label*expression)list->class_expr[@@ocaml.doc" [pcl_apply] constructs an {! Ast.Pcl_apply}\n\n{b Example OCaml}\n\n [Pcl_apply(CE, [(l1,E1) ; ... ; (ln,En)])] represents\n [CE ~l1:E1 ... ~ln:En]. [li] can be empty (non labeled argument) or\n start with [?] (optional argument).\n\n Invariant: [n > 0] "]valpcl_fun:arg_label->expressionoption->pattern->class_expr->class_expr[@@ocaml.doc" [pcl_fun] constructs an {! Ast.Pcl_fun}\n\n{b Example OCaml}\n\n [Pcl_fun(lbl, exp0, P, CE)] represents:\n\n - [fun P -> CE] when [lbl] is\n {{!Asttypes.arg_label.Nolabel} [Nolabel]} and [exp0] is [None],\n - [fun ~l:P -> CE] when [lbl] is\n {{!Asttypes.arg_label.Labelled} [Labelled l]} and [exp0] is [None],\n - [fun ?l:P -> CE] when [lbl] is\n {{!Asttypes.arg_label.Optional} [Optional l]} and [exp0] is [None],\n - [fun ?l:(P = E0) -> CE] when [lbl] is\n {{!Asttypes.arg_label.Optional} [Optional l]} and [exp0] is\n [Some E0]. "]valpcl_structure:class_structure->class_expr[@@ocaml.doc" [pcl_structure] constructs an {! Ast.Pcl_structure}\n\n{b Example OCaml}\n\n [object ... end] "]valpcl_constr:longidentloc->core_typelist->class_expr[@@ocaml.doc" [pcl_constr] constructs an {! Ast.Pcl_constr}\n\n{b Example OCaml}\n\n [c] and [['a1, ..., 'an] c] "][@@@ocaml.text"{2 Case}"]valcase:lhs:pattern->guard:expressionoption->rhs:expression->case[@@ocaml.doc" [case] constructs an {! Ast.case}\n\n{b Example OCaml}\n\n Values of type {!case} represents [(P -> E)] or [(P when E0 -> E)] "][@@@ocaml.text"{2 Binding op}"]valbinding_op:op:stringloc->pat:pattern->exp:expression->binding_op[@@ocaml.doc" [binding_op] constructs an {! Ast.binding_op}\n\n "][@@@ocaml.text"{2 Attribute}"]valattribute:name:stringloc->payload:payload->attribute[@@ocaml.doc" [attribute] constructs an {! Ast.attribute}\n\n{b Example OCaml}\n\n Attributes such as [[@id ARG]] and [[@@id ARG]].\n\n Metadata containers passed around within the AST. The compiler ignores\n unknown attributes. "][@@@ocaml.text"{2 'a open infos}"]valopen_infos:expr:'a->override:override_flag->'aopen_infos[@@ocaml.doc" [open_infos] constructs an {! Ast.'a open_infos}\n\n{b Example OCaml}\n\n Values of type ['a open_infos] represents:\n\n - [open! X] when {{!open_infos.popen_override} [popen_override]} is\n {{!Asttypes.override_flag.Override} [Override]} (silences the \"used\n identifier shadowing\" warning)\n - [open X] when {{!open_infos.popen_override} [popen_override]} is\n {{!Asttypes.override_flag.Fresh} [Fresh]} "][@@@ocaml.text"{2 'a include infos}"]valinclude_infos:'a->'ainclude_infos[@@ocaml.doc" [include_infos] constructs an {! Ast.'a include_infos}\n\n "][@@@ocaml.text"{2 'a class infos}"]valclass_infos:virt:virtual_flag->params:(core_type*(variance*injectivity))list->name:stringloc->expr:'a->'aclass_infos[@@ocaml.doc" [class_infos] constructs an {! Ast.'a class_infos}\n\n{b Example OCaml}\n\n Values of type [class_expr class_infos] represents:\n\n - [class c = ...]\n - [class ['a1,...,'an] c = ...]\n - [class virtual c = ...]\n\n They are also used for \"class type\" declaration. "]endmoduleM:Intf=structletattribute~loc=((fun~name->((fun~payload->{attr_name=name;attr_payload=payload;attr_loc=loc})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letbinding_op~loc=((fun~op->((fun~pat->((fun~exp->{pbop_op=op;pbop_pat=pat;pbop_exp=exp;pbop_loc=loc})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letcase~lhs=((fun~guard->((fun~rhs->{pc_lhs=lhs;pc_guard=guard;pc_rhs=rhs})[@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking])letpcl_constr~loc=((funx0->((funx1->{pcl_attributes=[];pcl_loc=loc;pcl_desc=(Pcl_constr(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpcl_structure~loc=((funx0->{pcl_attributes=[];pcl_loc=loc;pcl_desc=(Pcl_structurex0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpcl_fun~loc=((funx0->((funx1->((funx2->((funx3->{pcl_attributes=[];pcl_loc=loc;pcl_desc=(Pcl_fun(x0,x1,x2,x3))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpcl_apply~loc=((funx0->((funx1->{pcl_attributes=[];pcl_loc=loc;pcl_desc=(Pcl_apply(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpcl_let~loc=((funx0->((funx1->((funx2->{pcl_attributes=[];pcl_loc=loc;pcl_desc=(Pcl_let(x0,x1,x2))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpcl_constraint~loc=((funx0->((funx1->{pcl_attributes=[];pcl_loc=loc;pcl_desc=(Pcl_constraint(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpcl_extension~loc=((funx0->{pcl_attributes=[];pcl_loc=loc;pcl_desc=(Pcl_extensionx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpcl_open~loc=((funx0->((funx1->{pcl_attributes=[];pcl_loc=loc;pcl_desc=(Pcl_open(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpcf_inherit~loc=((funx0->((funx1->((funx2->{pcf_attributes=[];pcf_loc=loc;pcf_desc=(Pcf_inherit(x0,x1,x2))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpcf_val~loc=((funx0->{pcf_attributes=[];pcf_loc=loc;pcf_desc=(Pcf_valx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpcf_method~loc=((funx0->{pcf_attributes=[];pcf_loc=loc;pcf_desc=(Pcf_methodx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpcf_constraint~loc=((funx0->{pcf_attributes=[];pcf_loc=loc;pcf_desc=(Pcf_constraintx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpcf_initializer~loc=((funx0->{pcf_attributes=[];pcf_loc=loc;pcf_desc=(Pcf_initializerx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpcf_attribute~loc=((funx0->{pcf_attributes=[];pcf_loc=loc;pcf_desc=(Pcf_attributex0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpcf_extension~loc=((funx0->{pcf_attributes=[];pcf_loc=loc;pcf_desc=(Pcf_extensionx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letclass_infos~loc=((fun~virt->((fun~params->((fun~name->((fun~expr->{pci_virt=virt;pci_params=params;pci_name=name;pci_expr=expr;pci_loc=loc;pci_attributes=[]})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letclass_signature~self=((fun~fields->{pcsig_self=self;pcsig_fields=fields})[@ppxlib.migration.stop_taking])letclass_structure~self=((fun~fields->{pcstr_self=self;pcstr_fields=fields})[@ppxlib.migration.stop_taking])letpcty_constr~loc=((funx0->((funx1->{pcty_attributes=[];pcty_loc=loc;pcty_desc=(Pcty_constr(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpcty_signature~loc=((funx0->{pcty_attributes=[];pcty_loc=loc;pcty_desc=(Pcty_signaturex0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpcty_arrow~loc=((funx0->((funx1->((funx2->{pcty_attributes=[];pcty_loc=loc;pcty_desc=(Pcty_arrow(x0,x1,x2))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpcty_extension~loc=((funx0->{pcty_attributes=[];pcty_loc=loc;pcty_desc=(Pcty_extensionx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpcty_open~loc=((funx0->((funx1->{pcty_attributes=[];pcty_loc=loc;pcty_desc=(Pcty_open(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpctf_inherit~loc=((funx0->{pctf_attributes=[];pctf_loc=loc;pctf_desc=(Pctf_inheritx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpctf_val~loc=((funx0->{pctf_attributes=[];pctf_loc=loc;pctf_desc=(Pctf_valx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpctf_method~loc=((funx0->{pctf_attributes=[];pctf_loc=loc;pctf_desc=(Pctf_methodx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpctf_constraint~loc=((funx0->{pctf_attributes=[];pctf_loc=loc;pctf_desc=(Pctf_constraintx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpctf_attribute~loc=((funx0->{pctf_attributes=[];pctf_loc=loc;pctf_desc=(Pctf_attributex0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpctf_extension~loc=((funx0->{pctf_attributes=[];pctf_loc=loc;pctf_desc=(Pctf_extensionx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letconstructor_declaration~loc=((fun~name->((fun~vars->((fun~args->((fun~res->{pcd_name=name;pcd_vars=vars;pcd_args=args;pcd_res=res;pcd_loc=loc;pcd_attributes=[]})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letptyp_any~loc={ptyp_loc_stack=[];ptyp_attributes=[];ptyp_loc=loc;ptyp_desc=Ptyp_any}letptyp_var~loc=((funx0->{ptyp_loc_stack=[];ptyp_attributes=[];ptyp_loc=loc;ptyp_desc=(Ptyp_varx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letptyp_arrow~loc=((funx0->((funx1->((funx2->{ptyp_loc_stack=[];ptyp_attributes=[];ptyp_loc=loc;ptyp_desc=(Ptyp_arrow(x0,x1,x2))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letptyp_tuple~loc=((funx0->{ptyp_loc_stack=[];ptyp_attributes=[];ptyp_loc=loc;ptyp_desc=(Ptyp_tuplex0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letptyp_constr~loc=((funx0->((funx1->{ptyp_loc_stack=[];ptyp_attributes=[];ptyp_loc=loc;ptyp_desc=(Ptyp_constr(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letptyp_object~loc=((funx0->((funx1->{ptyp_loc_stack=[];ptyp_attributes=[];ptyp_loc=loc;ptyp_desc=(Ptyp_object(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letptyp_class~loc=((funx0->((funx1->{ptyp_loc_stack=[];ptyp_attributes=[];ptyp_loc=loc;ptyp_desc=(Ptyp_class(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letptyp_alias~loc=((funx0->((funx1->{ptyp_loc_stack=[];ptyp_attributes=[];ptyp_loc=loc;ptyp_desc=(Ptyp_alias(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letptyp_variant~loc=((funx0->((funx1->((funx2->{ptyp_loc_stack=[];ptyp_attributes=[];ptyp_loc=loc;ptyp_desc=(Ptyp_variant(x0,x1,x2))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letptyp_poly~loc=((funx0->((funx1->{ptyp_loc_stack=[];ptyp_attributes=[];ptyp_loc=loc;ptyp_desc=(Ptyp_poly(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letptyp_package~loc=((funx0->{ptyp_loc_stack=[];ptyp_attributes=[];ptyp_loc=loc;ptyp_desc=(Ptyp_packagex0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letptyp_extension~loc=((funx0->{ptyp_loc_stack=[];ptyp_attributes=[];ptyp_loc=loc;ptyp_desc=(Ptyp_extensionx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpdir_string~loc=((funx0->{pdira_loc=loc;pdira_desc=(Pdir_stringx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpdir_int~loc=((funx0->((funx1->{pdira_loc=loc;pdira_desc=(Pdir_int(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpdir_ident~loc=((funx0->{pdira_loc=loc;pdira_desc=(Pdir_identx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpdir_bool~loc=((funx0->{pdira_loc=loc;pdira_desc=(Pdir_boolx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_ident~loc=((funx0->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_identx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_constant~loc=((funx0->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_constantx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_let~loc=((funx0->((funx1->((funx2->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_let(x0,x1,x2))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_function~loc=((funx0->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_functionx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_fun~loc=((funx0->((funx1->((funx2->((funx3->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_fun(x0,x1,x2,x3))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_apply~loc=((funx0->((funx1->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_apply(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_match~loc=((funx0->((funx1->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_match(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_try~loc=((funx0->((funx1->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_try(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_tuple~loc=((funx0->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_tuplex0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_construct~loc=((funx0->((funx1->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_construct(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_variant~loc=((funx0->((funx1->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_variant(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_record~loc=((funx0->((funx1->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_record(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_field~loc=((funx0->((funx1->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_field(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_setfield~loc=((funx0->((funx1->((funx2->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_setfield(x0,x1,x2))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_array~loc=((funx0->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_arrayx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_ifthenelse~loc=((funx0->((funx1->((funx2->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_ifthenelse(x0,x1,x2))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_sequence~loc=((funx0->((funx1->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_sequence(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_while~loc=((funx0->((funx1->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_while(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_for~loc=((funx0->((funx1->((funx2->((funx3->((funx4->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_for(x0,x1,x2,x3,x4))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_constraint~loc=((funx0->((funx1->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_constraint(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_coerce~loc=((funx0->((funx1->((funx2->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_coerce(x0,x1,x2))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_send~loc=((funx0->((funx1->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_send(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_new~loc=((funx0->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_newx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_setinstvar~loc=((funx0->((funx1->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_setinstvar(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_override~loc=((funx0->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_overridex0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_letmodule~loc=((funx0->((funx1->((funx2->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_letmodule(x0,x1,x2))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_letexception~loc=((funx0->((funx1->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_letexception(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_assert~loc=((funx0->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_assertx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_lazy~loc=((funx0->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_lazyx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_poly~loc=((funx0->((funx1->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_poly(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_object~loc=((funx0->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_objectx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_newtype~loc=((funx0->((funx1->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_newtype(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_pack~loc=((funx0->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_packx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_open~loc=((funx0->((funx1->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_open(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_letop~loc=((funx0->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_letopx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_extension~loc=((funx0->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_extensionx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_unreachable~loc={pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=Pexp_unreachable}letextension_constructor~loc=((fun~name->((fun~kind->{pext_name=name;pext_kind=kind;pext_loc=loc;pext_attributes=[]})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letinclude_infos~loc=((funmod_->{pincl_mod=mod_;pincl_loc=loc;pincl_attributes=[]})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letlabel_declaration~loc=((fun~name->((fun~mutable_->((fun~type_->{pld_name=name;pld_mutable=mutable_;pld_type=type_;pld_loc=loc;pld_attributes=[]})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letletop~let_=((fun~ands->((fun~body->{let_;ands;body})[@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking])letlocation~start=((fun~end_->((fun~ghost->{loc_start=start;loc_end=end_;loc_ghost=ghost})[@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking])letmodule_binding~loc=((fun~name->((fun~expr->{pmb_name=name;pmb_expr=expr;pmb_attributes=[];pmb_loc=loc})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letmodule_declaration~loc=((fun~name->((fun~type_->{pmd_name=name;pmd_type=type_;pmd_attributes=[];pmd_loc=loc})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpmod_ident~loc=((funx0->{pmod_attributes=[];pmod_loc=loc;pmod_desc=(Pmod_identx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpmod_structure~loc=((funx0->{pmod_attributes=[];pmod_loc=loc;pmod_desc=(Pmod_structurex0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpmod_functor~loc=((funx0->((funx1->{pmod_attributes=[];pmod_loc=loc;pmod_desc=(Pmod_functor(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpmod_apply~loc=((funx0->((funx1->{pmod_attributes=[];pmod_loc=loc;pmod_desc=(Pmod_apply(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpmod_constraint~loc=((funx0->((funx1->{pmod_attributes=[];pmod_loc=loc;pmod_desc=(Pmod_constraint(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpmod_unpack~loc=((funx0->{pmod_attributes=[];pmod_loc=loc;pmod_desc=(Pmod_unpackx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpmod_extension~loc=((funx0->{pmod_attributes=[];pmod_loc=loc;pmod_desc=(Pmod_extensionx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letmodule_substitution~loc=((fun~name->((fun~manifest->{pms_name=name;pms_manifest=manifest;pms_attributes=[];pms_loc=loc})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpmty_ident~loc=((funx0->{pmty_attributes=[];pmty_loc=loc;pmty_desc=(Pmty_identx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpmty_signature~loc=((funx0->{pmty_attributes=[];pmty_loc=loc;pmty_desc=(Pmty_signaturex0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpmty_functor~loc=((funx0->((funx1->{pmty_attributes=[];pmty_loc=loc;pmty_desc=(Pmty_functor(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpmty_with~loc=((funx0->((funx1->{pmty_attributes=[];pmty_loc=loc;pmty_desc=(Pmty_with(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpmty_typeof~loc=((funx0->{pmty_attributes=[];pmty_loc=loc;pmty_desc=(Pmty_typeofx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpmty_extension~loc=((funx0->{pmty_attributes=[];pmty_loc=loc;pmty_desc=(Pmty_extensionx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpmty_alias~loc=((funx0->{pmty_attributes=[];pmty_loc=loc;pmty_desc=(Pmty_aliasx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letmodule_type_declaration~loc=((fun~name->((fun~type_->{pmtd_name=name;pmtd_type=type_;pmtd_attributes=[];pmtd_loc=loc})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letotag~loc=((funx0->((funx1->{pof_attributes=[];pof_loc=loc;pof_desc=(Otag(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letoinherit~loc=((funx0->{pof_attributes=[];pof_loc=loc;pof_desc=(Oinheritx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letopen_infos~loc=((fun~expr->((fun~override->{popen_expr=expr;popen_override=override;popen_loc=loc;popen_attributes=[]})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letppat_any~loc={ppat_loc_stack=[];ppat_attributes=[];ppat_loc=loc;ppat_desc=Ppat_any}letppat_var~loc=((funx0->{ppat_loc_stack=[];ppat_attributes=[];ppat_loc=loc;ppat_desc=(Ppat_varx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letppat_alias~loc=((funx0->((funx1->{ppat_loc_stack=[];ppat_attributes=[];ppat_loc=loc;ppat_desc=(Ppat_alias(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letppat_constant~loc=((funx0->{ppat_loc_stack=[];ppat_attributes=[];ppat_loc=loc;ppat_desc=(Ppat_constantx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letppat_interval~loc=((funx0->((funx1->{ppat_loc_stack=[];ppat_attributes=[];ppat_loc=loc;ppat_desc=(Ppat_interval(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letppat_tuple~loc=((funx0->{ppat_loc_stack=[];ppat_attributes=[];ppat_loc=loc;ppat_desc=(Ppat_tuplex0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letppat_construct~loc=((funx0->((funx1->{ppat_loc_stack=[];ppat_attributes=[];ppat_loc=loc;ppat_desc=(Ppat_construct(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letppat_variant~loc=((funx0->((funx1->{ppat_loc_stack=[];ppat_attributes=[];ppat_loc=loc;ppat_desc=(Ppat_variant(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letppat_record~loc=((funx0->((funx1->{ppat_loc_stack=[];ppat_attributes=[];ppat_loc=loc;ppat_desc=(Ppat_record(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letppat_array~loc=((funx0->{ppat_loc_stack=[];ppat_attributes=[];ppat_loc=loc;ppat_desc=(Ppat_arrayx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letppat_or~loc=((funx0->((funx1->{ppat_loc_stack=[];ppat_attributes=[];ppat_loc=loc;ppat_desc=(Ppat_or(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letppat_constraint~loc=((funx0->((funx1->{ppat_loc_stack=[];ppat_attributes=[];ppat_loc=loc;ppat_desc=(Ppat_constraint(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letppat_type~loc=((funx0->{ppat_loc_stack=[];ppat_attributes=[];ppat_loc=loc;ppat_desc=(Ppat_typex0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letppat_lazy~loc=((funx0->{ppat_loc_stack=[];ppat_attributes=[];ppat_loc=loc;ppat_desc=(Ppat_lazyx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letppat_unpack~loc=((funx0->{ppat_loc_stack=[];ppat_attributes=[];ppat_loc=loc;ppat_desc=(Ppat_unpackx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letppat_exception~loc=((funx0->{ppat_loc_stack=[];ppat_attributes=[];ppat_loc=loc;ppat_desc=(Ppat_exceptionx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letppat_extension~loc=((funx0->{ppat_loc_stack=[];ppat_attributes=[];ppat_loc=loc;ppat_desc=(Ppat_extensionx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letppat_open~loc=((funx0->((funx1->{ppat_loc_stack=[];ppat_attributes=[];ppat_loc=loc;ppat_desc=(Ppat_open(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letposition~fname=((fun~lnum->((fun~bol->((fun~cnum->{pos_fname=fname;pos_lnum=lnum;pos_bol=bol;pos_cnum=cnum})[@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking])letrtag~loc=((funx0->((funx1->((funx2->{prf_attributes=[];prf_loc=loc;prf_desc=(Rtag(x0,x1,x2))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letrinherit~loc=((funx0->{prf_attributes=[];prf_loc=loc;prf_desc=(Rinheritx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpsig_value~loc=((funx0->{psig_loc=loc;psig_desc=(Psig_valuex0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpsig_type~loc=((funx0->((funx1->{psig_loc=loc;psig_desc=(Psig_type(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpsig_typesubst~loc=((funx0->{psig_loc=loc;psig_desc=(Psig_typesubstx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpsig_typext~loc=((funx0->{psig_loc=loc;psig_desc=(Psig_typextx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpsig_exception~loc=((funx0->{psig_loc=loc;psig_desc=(Psig_exceptionx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpsig_module~loc=((funx0->{psig_loc=loc;psig_desc=(Psig_modulex0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpsig_modsubst~loc=((funx0->{psig_loc=loc;psig_desc=(Psig_modsubstx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpsig_recmodule~loc=((funx0->{psig_loc=loc;psig_desc=(Psig_recmodulex0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpsig_modtype~loc=((funx0->{psig_loc=loc;psig_desc=(Psig_modtypex0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpsig_modtypesubst~loc=((funx0->{psig_loc=loc;psig_desc=(Psig_modtypesubstx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpsig_open~loc=((funx0->{psig_loc=loc;psig_desc=(Psig_openx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpsig_include~loc=((funx0->{psig_loc=loc;psig_desc=(Psig_includex0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpsig_class~loc=((funx0->{psig_loc=loc;psig_desc=(Psig_classx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpsig_class_type~loc=((funx0->{psig_loc=loc;psig_desc=(Psig_class_typex0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpsig_attribute~loc=((funx0->{psig_loc=loc;psig_desc=(Psig_attributex0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpsig_extension~loc=((funx0->((funx1->{psig_loc=loc;psig_desc=(Psig_extension(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpstr_eval~loc=((funx0->((funx1->{pstr_loc=loc;pstr_desc=(Pstr_eval(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpstr_value~loc=((funx0->((funx1->{pstr_loc=loc;pstr_desc=(Pstr_value(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpstr_primitive~loc=((funx0->{pstr_loc=loc;pstr_desc=(Pstr_primitivex0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpstr_type~loc=((funx0->((funx1->{pstr_loc=loc;pstr_desc=(Pstr_type(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpstr_typext~loc=((funx0->{pstr_loc=loc;pstr_desc=(Pstr_typextx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpstr_exception~loc=((funx0->{pstr_loc=loc;pstr_desc=(Pstr_exceptionx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpstr_module~loc=((funx0->{pstr_loc=loc;pstr_desc=(Pstr_modulex0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpstr_recmodule~loc=((funx0->{pstr_loc=loc;pstr_desc=(Pstr_recmodulex0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpstr_modtype~loc=((funx0->{pstr_loc=loc;pstr_desc=(Pstr_modtypex0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpstr_open~loc=((funx0->{pstr_loc=loc;pstr_desc=(Pstr_openx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpstr_class~loc=((funx0->{pstr_loc=loc;pstr_desc=(Pstr_classx0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpstr_class_type~loc=((funx0->{pstr_loc=loc;pstr_desc=(Pstr_class_typex0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpstr_include~loc=((funx0->{pstr_loc=loc;pstr_desc=(Pstr_includex0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpstr_attribute~loc=((funx0->{pstr_loc=loc;pstr_desc=(Pstr_attributex0)})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpstr_extension~loc=((funx0->((funx1->{pstr_loc=loc;pstr_desc=(Pstr_extension(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])lettoplevel_directive~loc=((fun~name->((fun~arg->{pdir_name=name;pdir_arg=arg;pdir_loc=loc})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])lettype_declaration~loc=((fun~name->((fun~params->((fun~cstrs->((fun~kind->((fun~private_->((fun~manifest->{ptype_name=name;ptype_params=params;ptype_cstrs=cstrs;ptype_kind=kind;ptype_private=private_;ptype_manifest=manifest;ptype_attributes=[];ptype_loc=loc})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])lettype_exception~loc=((funconstructor->{ptyexn_constructor=constructor;ptyexn_loc=loc;ptyexn_attributes=[]})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])lettype_extension~loc=((fun~path->((fun~params->((fun~constructors->((fun~private_->{ptyext_path=path;ptyext_params=params;ptyext_constructors=constructors;ptyext_private=private_;ptyext_loc=loc;ptyext_attributes=[]})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letvalue_binding~loc=((fun~pat->((fun~expr->{pvb_pat=pat;pvb_expr=expr;pvb_attributes=[];pvb_loc=loc})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letvalue_description~loc=((fun~name->((fun~type_->((fun~prim->{pval_name=name;pval_type=type_;pval_prim=prim;pval_attributes=[];pval_loc=loc})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])endmoduleMake(Loc:sigvalloc:Location.tend):Intf_located=structletloc=Loc.locletattribute~name=((fun~payload->{attr_name=name;attr_payload=payload;attr_loc=loc})[@ppxlib.migration.stop_taking])letbinding_op~op=((fun~pat->((fun~exp->{pbop_op=op;pbop_pat=pat;pbop_exp=exp;pbop_loc=loc})[@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking])letcase~lhs=((fun~guard->((fun~rhs->{pc_lhs=lhs;pc_guard=guard;pc_rhs=rhs})[@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking])letpcl_constrx0=((funx1->{pcl_attributes=[];pcl_loc=loc;pcl_desc=(Pcl_constr(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpcl_structurex0={pcl_attributes=[];pcl_loc=loc;pcl_desc=(Pcl_structurex0)}letpcl_funx0=((funx1->((funx2->((funx3->{pcl_attributes=[];pcl_loc=loc;pcl_desc=(Pcl_fun(x0,x1,x2,x3))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpcl_applyx0=((funx1->{pcl_attributes=[];pcl_loc=loc;pcl_desc=(Pcl_apply(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpcl_letx0=((funx1->((funx2->{pcl_attributes=[];pcl_loc=loc;pcl_desc=(Pcl_let(x0,x1,x2))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpcl_constraintx0=((funx1->{pcl_attributes=[];pcl_loc=loc;pcl_desc=(Pcl_constraint(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpcl_extensionx0={pcl_attributes=[];pcl_loc=loc;pcl_desc=(Pcl_extensionx0)}letpcl_openx0=((funx1->{pcl_attributes=[];pcl_loc=loc;pcl_desc=(Pcl_open(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpcf_inheritx0=((funx1->((funx2->{pcf_attributes=[];pcf_loc=loc;pcf_desc=(Pcf_inherit(x0,x1,x2))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpcf_valx0={pcf_attributes=[];pcf_loc=loc;pcf_desc=(Pcf_valx0)}letpcf_methodx0={pcf_attributes=[];pcf_loc=loc;pcf_desc=(Pcf_methodx0)}letpcf_constraintx0={pcf_attributes=[];pcf_loc=loc;pcf_desc=(Pcf_constraintx0)}letpcf_initializerx0={pcf_attributes=[];pcf_loc=loc;pcf_desc=(Pcf_initializerx0)}letpcf_attributex0={pcf_attributes=[];pcf_loc=loc;pcf_desc=(Pcf_attributex0)}letpcf_extensionx0={pcf_attributes=[];pcf_loc=loc;pcf_desc=(Pcf_extensionx0)}letclass_infos~virt=((fun~params->((fun~name->((fun~expr->{pci_virt=virt;pci_params=params;pci_name=name;pci_expr=expr;pci_loc=loc;pci_attributes=[]})[@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking])letclass_signature~self=((fun~fields->{pcsig_self=self;pcsig_fields=fields})[@ppxlib.migration.stop_taking])letclass_structure~self=((fun~fields->{pcstr_self=self;pcstr_fields=fields})[@ppxlib.migration.stop_taking])letpcty_constrx0=((funx1->{pcty_attributes=[];pcty_loc=loc;pcty_desc=(Pcty_constr(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpcty_signaturex0={pcty_attributes=[];pcty_loc=loc;pcty_desc=(Pcty_signaturex0)}letpcty_arrowx0=((funx1->((funx2->{pcty_attributes=[];pcty_loc=loc;pcty_desc=(Pcty_arrow(x0,x1,x2))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpcty_extensionx0={pcty_attributes=[];pcty_loc=loc;pcty_desc=(Pcty_extensionx0)}letpcty_openx0=((funx1->{pcty_attributes=[];pcty_loc=loc;pcty_desc=(Pcty_open(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpctf_inheritx0={pctf_attributes=[];pctf_loc=loc;pctf_desc=(Pctf_inheritx0)}letpctf_valx0={pctf_attributes=[];pctf_loc=loc;pctf_desc=(Pctf_valx0)}letpctf_methodx0={pctf_attributes=[];pctf_loc=loc;pctf_desc=(Pctf_methodx0)}letpctf_constraintx0={pctf_attributes=[];pctf_loc=loc;pctf_desc=(Pctf_constraintx0)}letpctf_attributex0={pctf_attributes=[];pctf_loc=loc;pctf_desc=(Pctf_attributex0)}letpctf_extensionx0={pctf_attributes=[];pctf_loc=loc;pctf_desc=(Pctf_extensionx0)}letconstructor_declaration~name=((fun~vars->((fun~args->((fun~res->{pcd_name=name;pcd_vars=vars;pcd_args=args;pcd_res=res;pcd_loc=loc;pcd_attributes=[]})[@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking])letptyp_any={ptyp_loc_stack=[];ptyp_attributes=[];ptyp_loc=loc;ptyp_desc=Ptyp_any}letptyp_varx0={ptyp_loc_stack=[];ptyp_attributes=[];ptyp_loc=loc;ptyp_desc=(Ptyp_varx0)}letptyp_arrowx0=((funx1->((funx2->{ptyp_loc_stack=[];ptyp_attributes=[];ptyp_loc=loc;ptyp_desc=(Ptyp_arrow(x0,x1,x2))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letptyp_tuplex0={ptyp_loc_stack=[];ptyp_attributes=[];ptyp_loc=loc;ptyp_desc=(Ptyp_tuplex0)}letptyp_constrx0=((funx1->{ptyp_loc_stack=[];ptyp_attributes=[];ptyp_loc=loc;ptyp_desc=(Ptyp_constr(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letptyp_objectx0=((funx1->{ptyp_loc_stack=[];ptyp_attributes=[];ptyp_loc=loc;ptyp_desc=(Ptyp_object(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letptyp_classx0=((funx1->{ptyp_loc_stack=[];ptyp_attributes=[];ptyp_loc=loc;ptyp_desc=(Ptyp_class(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letptyp_aliasx0=((funx1->{ptyp_loc_stack=[];ptyp_attributes=[];ptyp_loc=loc;ptyp_desc=(Ptyp_alias(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letptyp_variantx0=((funx1->((funx2->{ptyp_loc_stack=[];ptyp_attributes=[];ptyp_loc=loc;ptyp_desc=(Ptyp_variant(x0,x1,x2))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letptyp_polyx0=((funx1->{ptyp_loc_stack=[];ptyp_attributes=[];ptyp_loc=loc;ptyp_desc=(Ptyp_poly(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letptyp_packagex0={ptyp_loc_stack=[];ptyp_attributes=[];ptyp_loc=loc;ptyp_desc=(Ptyp_packagex0)}letptyp_extensionx0={ptyp_loc_stack=[];ptyp_attributes=[];ptyp_loc=loc;ptyp_desc=(Ptyp_extensionx0)}letpdir_stringx0={pdira_loc=loc;pdira_desc=(Pdir_stringx0)}letpdir_intx0=((funx1->{pdira_loc=loc;pdira_desc=(Pdir_int(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpdir_identx0={pdira_loc=loc;pdira_desc=(Pdir_identx0)}letpdir_boolx0={pdira_loc=loc;pdira_desc=(Pdir_boolx0)}letpexp_identx0={pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_identx0)}letpexp_constantx0={pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_constantx0)}letpexp_letx0=((funx1->((funx2->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_let(x0,x1,x2))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_functionx0={pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_functionx0)}letpexp_funx0=((funx1->((funx2->((funx3->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_fun(x0,x1,x2,x3))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_applyx0=((funx1->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_apply(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_matchx0=((funx1->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_match(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_tryx0=((funx1->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_try(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_tuplex0={pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_tuplex0)}letpexp_constructx0=((funx1->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_construct(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_variantx0=((funx1->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_variant(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_recordx0=((funx1->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_record(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_fieldx0=((funx1->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_field(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_setfieldx0=((funx1->((funx2->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_setfield(x0,x1,x2))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_arrayx0={pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_arrayx0)}letpexp_ifthenelsex0=((funx1->((funx2->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_ifthenelse(x0,x1,x2))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_sequencex0=((funx1->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_sequence(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_whilex0=((funx1->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_while(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_forx0=((funx1->((funx2->((funx3->((funx4->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_for(x0,x1,x2,x3,x4))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_constraintx0=((funx1->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_constraint(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_coercex0=((funx1->((funx2->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_coerce(x0,x1,x2))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_sendx0=((funx1->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_send(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_newx0={pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_newx0)}letpexp_setinstvarx0=((funx1->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_setinstvar(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_overridex0={pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_overridex0)}letpexp_letmodulex0=((funx1->((funx2->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_letmodule(x0,x1,x2))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_letexceptionx0=((funx1->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_letexception(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_assertx0={pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_assertx0)}letpexp_lazyx0={pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_lazyx0)}letpexp_polyx0=((funx1->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_poly(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_objectx0={pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_objectx0)}letpexp_newtypex0=((funx1->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_newtype(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_packx0={pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_packx0)}letpexp_openx0=((funx1->{pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_open(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpexp_letopx0={pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_letopx0)}letpexp_extensionx0={pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=(Pexp_extensionx0)}letpexp_unreachable={pexp_loc_stack=[];pexp_attributes=[];pexp_loc=loc;pexp_desc=Pexp_unreachable}letextension_constructor~name=((fun~kind->{pext_name=name;pext_kind=kind;pext_loc=loc;pext_attributes=[]})[@ppxlib.migration.stop_taking])letinclude_infosmod_={pincl_mod=mod_;pincl_loc=loc;pincl_attributes=[]}letlabel_declaration~name=((fun~mutable_->((fun~type_->{pld_name=name;pld_mutable=mutable_;pld_type=type_;pld_loc=loc;pld_attributes=[]})[@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking])letletop~let_=((fun~ands->((fun~body->{let_;ands;body})[@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking])letlocation~start=((fun~end_->((fun~ghost->{loc_start=start;loc_end=end_;loc_ghost=ghost})[@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking])letmodule_binding~name=((fun~expr->{pmb_name=name;pmb_expr=expr;pmb_attributes=[];pmb_loc=loc})[@ppxlib.migration.stop_taking])letmodule_declaration~name=((fun~type_->{pmd_name=name;pmd_type=type_;pmd_attributes=[];pmd_loc=loc})[@ppxlib.migration.stop_taking])letpmod_identx0={pmod_attributes=[];pmod_loc=loc;pmod_desc=(Pmod_identx0)}letpmod_structurex0={pmod_attributes=[];pmod_loc=loc;pmod_desc=(Pmod_structurex0)}letpmod_functorx0=((funx1->{pmod_attributes=[];pmod_loc=loc;pmod_desc=(Pmod_functor(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpmod_applyx0=((funx1->{pmod_attributes=[];pmod_loc=loc;pmod_desc=(Pmod_apply(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpmod_constraintx0=((funx1->{pmod_attributes=[];pmod_loc=loc;pmod_desc=(Pmod_constraint(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpmod_unpackx0={pmod_attributes=[];pmod_loc=loc;pmod_desc=(Pmod_unpackx0)}letpmod_extensionx0={pmod_attributes=[];pmod_loc=loc;pmod_desc=(Pmod_extensionx0)}letmodule_substitution~name=((fun~manifest->{pms_name=name;pms_manifest=manifest;pms_attributes=[];pms_loc=loc})[@ppxlib.migration.stop_taking])letpmty_identx0={pmty_attributes=[];pmty_loc=loc;pmty_desc=(Pmty_identx0)}letpmty_signaturex0={pmty_attributes=[];pmty_loc=loc;pmty_desc=(Pmty_signaturex0)}letpmty_functorx0=((funx1->{pmty_attributes=[];pmty_loc=loc;pmty_desc=(Pmty_functor(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpmty_withx0=((funx1->{pmty_attributes=[];pmty_loc=loc;pmty_desc=(Pmty_with(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpmty_typeofx0={pmty_attributes=[];pmty_loc=loc;pmty_desc=(Pmty_typeofx0)}letpmty_extensionx0={pmty_attributes=[];pmty_loc=loc;pmty_desc=(Pmty_extensionx0)}letpmty_aliasx0={pmty_attributes=[];pmty_loc=loc;pmty_desc=(Pmty_aliasx0)}letmodule_type_declaration~name=((fun~type_->{pmtd_name=name;pmtd_type=type_;pmtd_attributes=[];pmtd_loc=loc})[@ppxlib.migration.stop_taking])letotagx0=((funx1->{pof_attributes=[];pof_loc=loc;pof_desc=(Otag(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letoinheritx0={pof_attributes=[];pof_loc=loc;pof_desc=(Oinheritx0)}letopen_infos~expr=((fun~override->{popen_expr=expr;popen_override=override;popen_loc=loc;popen_attributes=[]})[@ppxlib.migration.stop_taking])letppat_any={ppat_loc_stack=[];ppat_attributes=[];ppat_loc=loc;ppat_desc=Ppat_any}letppat_varx0={ppat_loc_stack=[];ppat_attributes=[];ppat_loc=loc;ppat_desc=(Ppat_varx0)}letppat_aliasx0=((funx1->{ppat_loc_stack=[];ppat_attributes=[];ppat_loc=loc;ppat_desc=(Ppat_alias(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letppat_constantx0={ppat_loc_stack=[];ppat_attributes=[];ppat_loc=loc;ppat_desc=(Ppat_constantx0)}letppat_intervalx0=((funx1->{ppat_loc_stack=[];ppat_attributes=[];ppat_loc=loc;ppat_desc=(Ppat_interval(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letppat_tuplex0={ppat_loc_stack=[];ppat_attributes=[];ppat_loc=loc;ppat_desc=(Ppat_tuplex0)}letppat_constructx0=((funx1->{ppat_loc_stack=[];ppat_attributes=[];ppat_loc=loc;ppat_desc=(Ppat_construct(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letppat_variantx0=((funx1->{ppat_loc_stack=[];ppat_attributes=[];ppat_loc=loc;ppat_desc=(Ppat_variant(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letppat_recordx0=((funx1->{ppat_loc_stack=[];ppat_attributes=[];ppat_loc=loc;ppat_desc=(Ppat_record(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letppat_arrayx0={ppat_loc_stack=[];ppat_attributes=[];ppat_loc=loc;ppat_desc=(Ppat_arrayx0)}letppat_orx0=((funx1->{ppat_loc_stack=[];ppat_attributes=[];ppat_loc=loc;ppat_desc=(Ppat_or(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letppat_constraintx0=((funx1->{ppat_loc_stack=[];ppat_attributes=[];ppat_loc=loc;ppat_desc=(Ppat_constraint(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letppat_typex0={ppat_loc_stack=[];ppat_attributes=[];ppat_loc=loc;ppat_desc=(Ppat_typex0)}letppat_lazyx0={ppat_loc_stack=[];ppat_attributes=[];ppat_loc=loc;ppat_desc=(Ppat_lazyx0)}letppat_unpackx0={ppat_loc_stack=[];ppat_attributes=[];ppat_loc=loc;ppat_desc=(Ppat_unpackx0)}letppat_exceptionx0={ppat_loc_stack=[];ppat_attributes=[];ppat_loc=loc;ppat_desc=(Ppat_exceptionx0)}letppat_extensionx0={ppat_loc_stack=[];ppat_attributes=[];ppat_loc=loc;ppat_desc=(Ppat_extensionx0)}letppat_openx0=((funx1->{ppat_loc_stack=[];ppat_attributes=[];ppat_loc=loc;ppat_desc=(Ppat_open(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letposition~fname=((fun~lnum->((fun~bol->((fun~cnum->{pos_fname=fname;pos_lnum=lnum;pos_bol=bol;pos_cnum=cnum})[@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking])letrtagx0=((funx1->((funx2->{prf_attributes=[];prf_loc=loc;prf_desc=(Rtag(x0,x1,x2))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letrinheritx0={prf_attributes=[];prf_loc=loc;prf_desc=(Rinheritx0)}letpsig_valuex0={psig_loc=loc;psig_desc=(Psig_valuex0)}letpsig_typex0=((funx1->{psig_loc=loc;psig_desc=(Psig_type(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpsig_typesubstx0={psig_loc=loc;psig_desc=(Psig_typesubstx0)}letpsig_typextx0={psig_loc=loc;psig_desc=(Psig_typextx0)}letpsig_exceptionx0={psig_loc=loc;psig_desc=(Psig_exceptionx0)}letpsig_modulex0={psig_loc=loc;psig_desc=(Psig_modulex0)}letpsig_modsubstx0={psig_loc=loc;psig_desc=(Psig_modsubstx0)}letpsig_recmodulex0={psig_loc=loc;psig_desc=(Psig_recmodulex0)}letpsig_modtypex0={psig_loc=loc;psig_desc=(Psig_modtypex0)}letpsig_modtypesubstx0={psig_loc=loc;psig_desc=(Psig_modtypesubstx0)}letpsig_openx0={psig_loc=loc;psig_desc=(Psig_openx0)}letpsig_includex0={psig_loc=loc;psig_desc=(Psig_includex0)}letpsig_classx0={psig_loc=loc;psig_desc=(Psig_classx0)}letpsig_class_typex0={psig_loc=loc;psig_desc=(Psig_class_typex0)}letpsig_attributex0={psig_loc=loc;psig_desc=(Psig_attributex0)}letpsig_extensionx0=((funx1->{psig_loc=loc;psig_desc=(Psig_extension(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpstr_evalx0=((funx1->{pstr_loc=loc;pstr_desc=(Pstr_eval(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpstr_valuex0=((funx1->{pstr_loc=loc;pstr_desc=(Pstr_value(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpstr_primitivex0={pstr_loc=loc;pstr_desc=(Pstr_primitivex0)}letpstr_typex0=((funx1->{pstr_loc=loc;pstr_desc=(Pstr_type(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])letpstr_typextx0={pstr_loc=loc;pstr_desc=(Pstr_typextx0)}letpstr_exceptionx0={pstr_loc=loc;pstr_desc=(Pstr_exceptionx0)}letpstr_modulex0={pstr_loc=loc;pstr_desc=(Pstr_modulex0)}letpstr_recmodulex0={pstr_loc=loc;pstr_desc=(Pstr_recmodulex0)}letpstr_modtypex0={pstr_loc=loc;pstr_desc=(Pstr_modtypex0)}letpstr_openx0={pstr_loc=loc;pstr_desc=(Pstr_openx0)}letpstr_classx0={pstr_loc=loc;pstr_desc=(Pstr_classx0)}letpstr_class_typex0={pstr_loc=loc;pstr_desc=(Pstr_class_typex0)}letpstr_includex0={pstr_loc=loc;pstr_desc=(Pstr_includex0)}letpstr_attributex0={pstr_loc=loc;pstr_desc=(Pstr_attributex0)}letpstr_extensionx0=((funx1->{pstr_loc=loc;pstr_desc=(Pstr_extension(x0,x1))})[@ppxlib.migration.stop_taking][@ppxlib.migration.stop_taking])lettoplevel_directive~name=((fun~arg->{pdir_name=name;pdir_arg=arg;pdir_loc=loc})[@ppxlib.migration.stop_taking])lettype_declaration~name=((fun~params->((fun~cstrs->((fun~kind->((fun~private_->((fun~manifest->{ptype_name=name;ptype_params=params;ptype_cstrs=cstrs;ptype_kind=kind;ptype_private=private_;ptype_manifest=manifest;ptype_attributes=[];ptype_loc=loc})[@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking])lettype_exceptionconstructor={ptyexn_constructor=constructor;ptyexn_loc=loc;ptyexn_attributes=[]}lettype_extension~path=((fun~params->((fun~constructors->((fun~private_->{ptyext_path=path;ptyext_params=params;ptyext_constructors=constructors;ptyext_private=private_;ptyext_loc=loc;ptyext_attributes=[]})[@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking])letvalue_binding~pat=((fun~expr->{pvb_pat=pat;pvb_expr=expr;pvb_attributes=[];pvb_loc=loc})[@ppxlib.migration.stop_taking])letvalue_description~name=((fun~type_->((fun~prim->{pval_name=name;pval_type=type_;pval_prim=prim;pval_attributes=[];pval_loc=loc})[@ppxlib.migration.stop_taking]))[@ppxlib.migration.stop_taking])end