12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276827782788279828082818282828382848285828682878288828982908291829282938294829582968297829882998300830183028303830483058306830783088309831083118312831383148315831683178318831983208321832283238324832583268327832883298330833183328333833483358336833783388339834083418342834383448345834683478348834983508351835283538354835583568357835883598360836183628363836483658366836783688369837083718372837383748375837683778378837983808381838283838384838583868387838883898390839183928393839483958396839783988399840084018402840384048405840684078408840984108411841284138414841584168417841884198420842184228423842484258426842784288429843084318432843384348435843684378438843984408441844284438444844584468447844884498450845184528453845484558456845784588459846084618462846384648465846684678468846984708471847284738474847584768477847884798480848184828483848484858486848784888489849084918492849384948495849684978498849985008501850285038504850585068507850885098510851185128513851485158516851785188519852085218522852385248525852685278528852985308531853285338534853585368537853885398540854185428543854485458546854785488549855085518552855385548555855685578558855985608561856285638564856585668567856885698570857185728573857485758576857785788579858085818582858385848585858685878588858985908591859285938594859585968597859885998600860186028603860486058606860786088609861086118612861386148615861686178618861986208621862286238624862586268627862886298630863186328633863486358636863786388639864086418642864386448645864686478648864986508651865286538654865586568657865886598660866186628663866486658666866786688669867086718672867386748675867686778678867986808681868286838684868586868687868886898690869186928693869486958696869786988699870087018702870387048705870687078708870987108711871287138714871587168717871887198720872187228723872487258726872787288729873087318732873387348735873687378738873987408741874287438744874587468747874887498750875187528753875487558756875787588759876087618762876387648765876687678768876987708771877287738774877587768777877887798780878187828783878487858786878787888789879087918792879387948795879687978798879988008801880288038804880588068807880888098810881188128813881488158816881788188819882088218822882388248825882688278828882988308831883288338834883588368837883888398840884188428843884488458846884788488849885088518852885388548855885688578858885988608861886288638864886588668867886888698870887188728873887488758876887788788879888088818882888388848885888688878888888988908891889288938894889588968897889888998900890189028903890489058906890789088909891089118912891389148915891689178918891989208921892289238924892589268927892889298930893189328933893489358936893789388939894089418942894389448945894689478948894989508951895289538954895589568957895889598960896189628963896489658966896789688969897089718972897389748975897689778978897989808981898289838984898589868987898889898990899189928993899489958996899789988999900090019002900390049005900690079008900990109011901290139014901590169017901890199020902190229023902490259026902790289029903090319032903390349035903690379038903990409041904290439044904590469047904890499050905190529053905490559056905790589059906090619062906390649065906690679068906990709071907290739074907590769077907890799080908190829083908490859086908790889089909090919092909390949095909690979098909991009101910291039104910591069107910891099110911191129113911491159116911791189119912091219122912391249125912691279128912991309131913291339134913591369137913891399140914191429143914491459146914791489149915091519152915391549155915691579158915991609161916291639164916591669167916891699170917191729173917491759176917791789179918091819182918391849185918691879188918991909191919291939194919591969197919891999200920192029203920492059206920792089209921092119212921392149215921692179218921992209221922292239224922592269227922892299230923192329233923492359236923792389239924092419242924392449245924692479248924992509251925292539254925592569257925892599260926192629263926492659266926792689269927092719272927392749275927692779278927992809281928292839284928592869287928892899290929192929293929492959296929792989299930093019302930393049305930693079308930993109311931293139314931593169317931893199320932193229323932493259326932793289329933093319332933393349335933693379338933993409341934293439344934593469347934893499350935193529353935493559356935793589359936093619362936393649365936693679368936993709371937293739374937593769377937893799380938193829383938493859386938793889389939093919392939393949395939693979398939994009401940294039404940594069407940894099410941194129413941494159416941794189419942094219422942394249425942694279428942994309431943294339434943594369437943894399440944194429443944494459446944794489449945094519452945394549455945694579458945994609461946294639464946594669467946894699470947194729473947494759476947794789479948094819482948394849485948694879488948994909491949294939494949594969497949894999500950195029503950495059506950795089509951095119512951395149515951695179518951995209521952295239524952595269527952895299530953195329533953495359536953795389539954095419542954395449545954695479548954995509551955295539554955595569557955895599560956195629563956495659566956795689569957095719572957395749575957695779578957995809581958295839584958595869587958895899590959195929593959495959596959795989599960096019602960396049605960696079608960996109611961296139614961596169617961896199620962196229623962496259626962796289629963096319632963396349635963696379638963996409641964296439644964596469647964896499650965196529653965496559656965796589659966096619662966396649665966696679668966996709671967296739674967596769677967896799680968196829683968496859686968796889689969096919692969396949695969696979698969997009701970297039704970597069707970897099710971197129713971497159716971797189719972097219722972397249725972697279728972997309731973297339734973597369737973897399740974197429743974497459746974797489749975097519752975397549755975697579758975997609761976297639764976597669767976897699770977197729773977497759776977797789779978097819782978397849785978697879788978997909791979297939794979597969797979897999800980198029803980498059806980798089809981098119812981398149815981698179818981998209821982298239824982598269827982898299830983198329833983498359836983798389839984098419842984398449845984698479848984998509851985298539854985598569857985898599860986198629863986498659866986798689869987098719872987398749875987698779878987998809881988298839884988598869887988898899890989198929893989498959896989798989899990099019902990399049905990699079908990999109911991299139914991599169917991899199920992199229923992499259926992799289929993099319932993399349935993699379938993999409941994299439944994599469947994899499950995199529953995499559956995799589959996099619962996399649965996699679968996999709971997299739974997599769977997899799980998199829983998499859986998799889989999099919992999399949995999699979998999910000100011000210003100041000510006100071000810009100101001110012100131001410015100161001710018100191002010021100221002310024100251002610027100281002910030100311003210033100341003510036100371003810039100401004110042100431004410045100461004710048100491005010051100521005310054100551005610057100581005910060100611006210063100641006510066100671006810069100701007110072100731007410075100761007710078100791008010081100821008310084100851008610087100881008910090100911009210093100941009510096100971009810099101001010110102101031010410105101061010710108101091011010111101121011310114101151011610117101181011910120101211012210123101241012510126101271012810129101301013110132101331013410135101361013710138101391014010141101421014310144101451014610147101481014910150101511015210153101541015510156101571015810159101601016110162101631016410165101661016710168101691017010171101721017310174101751017610177101781017910180101811018210183101841018510186101871018810189101901019110192101931019410195101961019710198101991020010201102021020310204102051020610207102081020910210102111021210213102141021510216102171021810219102201022110222102231022410225102261022710228102291023010231102321023310234102351023610237102381023910240102411024210243102441024510246102471024810249102501025110252102531025410255102561025710258102591026010261102621026310264102651026610267102681026910270102711027210273102741027510276102771027810279102801028110282102831028410285102861028710288102891029010291102921029310294102951029610297102981029910300103011030210303103041030510306103071030810309103101031110312103131031410315103161031710318103191032010321103221032310324103251032610327103281032910330103311033210333103341033510336103371033810339103401034110342103431034410345103461034710348103491035010351103521035310354103551035610357103581035910360103611036210363103641036510366103671036810369103701037110372103731037410375103761037710378103791038010381103821038310384103851038610387103881038910390103911039210393103941039510396103971039810399104001040110402104031040410405104061040710408104091041010411104121041310414104151041610417104181041910420104211042210423104241042510426104271042810429104301043110432104331043410435104361043710438104391044010441104421044310444104451044610447104481044910450104511045210453104541045510456104571045810459104601046110462104631046410465104661046710468104691047010471104721047310474104751047610477104781047910480104811048210483104841048510486104871048810489104901049110492104931049410495104961049710498104991050010501105021050310504105051050610507105081050910510105111051210513105141051510516105171051810519105201052110522105231052410525105261052710528105291053010531105321053310534105351053610537105381053910540105411054210543105441054510546105471054810549105501055110552105531055410555105561055710558105591056010561105621056310564105651056610567105681056910570105711057210573105741057510576105771057810579105801058110582105831058410585105861058710588105891059010591105921059310594105951059610597105981059910600106011060210603106041060510606106071060810609106101061110612106131061410615106161061710618106191062010621106221062310624106251062610627106281062910630106311063210633106341063510636106371063810639106401064110642106431064410645106461064710648106491065010651106521065310654106551065610657106581065910660106611066210663106641066510666106671066810669106701067110672106731067410675106761067710678106791068010681106821068310684106851068610687106881068910690106911069210693106941069510696106971069810699107001070110702107031070410705107061070710708107091071010711107121071310714107151071610717107181071910720107211072210723107241072510726107271072810729107301073110732107331073410735107361073710738107391074010741107421074310744107451074610747107481074910750107511075210753107541075510756107571075810759107601076110762107631076410765107661076710768107691077010771107721077310774107751077610777107781077910780107811078210783107841078510786107871078810789107901079110792107931079410795107961079710798107991080010801108021080310804108051080610807108081080910810108111081210813108141081510816108171081810819108201082110822108231082410825108261082710828108291083010831108321083310834108351083610837108381083910840108411084210843108441084510846108471084810849108501085110852108531085410855108561085710858108591086010861108621086310864(**************************************************************************)(* *)(* OCaml *)(* *)(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)(* *)(* Copyright 1996 Institut National de Recherche en Informatique et *)(* en Automatique. *)(* *)(* All rights reserved. This file is distributed under the terms of *)(* the GNU Lesser General Public License version 2.1, with the *)(* special exception on linking described in the file LICENSE. *)(* *)(**************************************************************************)openImport(** Definition of the OCaml AST *)(* This file is obtained by:
- copying a subset of the corresponding ast_xxx.ml file from Astlib
(sub-modules Asttypes and Parsetree)
- adding the type definitions for position, location, loc and longident
- flattening all the modules
- removing Asttypes.constant (unused and conflicts with Parsetree.constant)
- renaming a few types:
- - Location.t -> location
- - Longident.t -> longident
- adding a type longident_loc = longident loc and replacing all the occurrences of the
latter by the former. This is so that we can override iteration at the level of a
longident loc
- adding a type cases = case list
- replacing all occurrences of "case list" by "cases"
- replacing all the (*IF_CURRENT = Foo.bar*) by: = Foo.bar
- removing the extra values at the end of the file
- replacing all [type ...] by [and ...] to make everything one recursive block
- adding [@@deriving_inline traverse][@@@end] at the end
To update it to a newer OCaml version, create a new module with the above from the
latest compiler and add the following module definitions and opens to get it to
compile:
[{
module Ast = Versions.OCaml_4xx
open Ast.Ast
module Location = Ocaml_common.Location
module Longident = Ocaml_common.Longident
}]
Once you have generated the inlined derived traversal classes by running
[{ dune build @lint }] you can replace the above mentioned module definitions by a
[open Import] and update [Import] so that the [Js] module points to
[Versions.OCaml_4xx].
*)(* Source code locations (ranges of positions), used in parsetree. *)typeposition=Lexing.position={pos_fname:string;pos_lnum:int;pos_bol:int;pos_cnum:int;}andlocation=Location.t={loc_start:position;loc_end:position;loc_ghost:bool;}andlocation_stack=locationlist(* Note on the use of Lexing.position in this module.
If [pos_fname = ""], then use [!input_name] instead.
If [pos_lnum = -1], then [pos_bol = 0]. Use [pos_cnum] and
re-parse the file to get the line and character numbers.
Else all fields are correct.
*)and'aloc='aLocation.loc={txt:'a;loc:location}(* Long identifiers, used in parsetree. *)andlongident=Longident.t=|Lidentofstring|Ldotoflongident*string|Lapplyoflongident*longidentandlongident_loc=longidentloc(** Auxiliary AST types used by parsetree and typedtree. *)andrec_flag=Asttypes.rec_flag=Nonrecursive|Recursiveanddirection_flag=Asttypes.direction_flag=Upto|Downto(* Order matters, used in polymorphic comparison *)andprivate_flag=Asttypes.private_flag=Private|Publicandmutable_flag=Asttypes.mutable_flag=Immutable|Mutableandvirtual_flag=Asttypes.virtual_flag=Virtual|Concreteandoverride_flag=Asttypes.override_flag=Override|Freshandclosed_flag=Asttypes.closed_flag=Closed|Openandlabel=stringandarg_label=Asttypes.arg_label=|Nolabel|Labelledofstring(** [label:T -> ...] *)|Optionalofstring(** [?label:T -> ...] *)andvariance=Asttypes.variance=Covariant|Contravariant|NoVarianceandinjectivity=Asttypes.injectivity=Injective|NoInjectivity(** Abstract syntax tree produced by parsing *)andconstant=Parsetree.constant=|Pconst_integerofstring*charoption(** Integer constants such as [3] [3l] [3L] [3n].
Suffixes [[g-z][G-Z]] are accepted by the parser. Suffixes except
['l'], ['L'] and ['n'] are rejected by the typechecker *)|Pconst_charofchar(** Character such as ['c']. *)|Pconst_stringofstring*location*stringoption(** Constant string such as ["constant"] or
[{delim|other constant|delim}].
The location span the content of the string, without the delimiters.
*)|Pconst_floatofstring*charoption(** Float constant such as [3.4], [2e5] or [1.4e-4].
Suffixes [g-z][G-Z] are accepted by the parser. Suffixes are rejected
by the typechecker. *)(** {1 Extension points} *)andattribute=Parsetree.attribute={attr_name:stringloc;attr_payload:payload;attr_loc:location;}(** Attributes such as [[\@id ARG]] and [[\@\@id ARG]].
Metadata containers passed around within the AST. The compiler ignores
unknown attributes. *)andextension=stringloc*payload(** Extension points such as [[%id ARG] and [%%id ARG]].
Sub-language placeholder -- rejected by the typechecker. *)andattributes=attributelistandpayload=Parsetree.payload=|PStrofstructure|PSigofsignature(** [: SIG] in an attribute or an extension point *)|PTypofcore_type(** [: T] in an attribute or an extension point *)|PPatofpattern*expressionoption(** [? P] or [? P when E], in an attribute or an extension point *)(** {1 Core language} *)(** {2 Type expressions} *)andcore_type=Parsetree.core_type={ptyp_desc:core_type_desc;ptyp_loc:location;ptyp_loc_stack:location_stack;ptyp_attributes:attributes;(** [... [\@id1] [\@id2]] *)}andcore_type_desc=Parsetree.core_type_desc=|Ptyp_any(** [_] *)|Ptyp_varofstring(** A type variable such as ['a] *)|Ptyp_arrowofarg_label*core_type*core_type(** [Ptyp_arrow(lbl, T1, T2)] represents:
- [T1 -> T2] when [lbl] is {{!Asttypes.arg_label.Nolabel} [Nolabel]},
- [~l:T1 -> T2] when [lbl] is
{{!Asttypes.arg_label.Labelled} [Labelled]},
- [?l:T1 -> T2] when [lbl] is
{{!Asttypes.arg_label.Optional} [Optional]}. *)|Ptyp_tupleofcore_typelist(** [Ptyp_tuple([T1 ; ... ; Tn])] represents a product type
[T1 * ... * Tn].
Invariant: [n >= 2]. *)|Ptyp_constroflongident_loc*core_typelist(** [Ptyp_constr(lident, l)] represents:
- [tconstr] when [l=[]],
- [T tconstr] when [l=[T]],
- [(T1, ..., Tn) tconstr] when [l=[T1 ; ... ; Tn]]. *)|Ptyp_objectofobject_fieldlist*closed_flag(** [Ptyp_object([ l1:T1; ...; ln:Tn ], flag)] represents:
- [< l1:T1; ...; ln:Tn >] when [flag] is
{{!Asttypes.closed_flag.Closed} [Closed]},
- [< l1:T1; ...; ln:Tn; .. >] when [flag] is
{{!Asttypes.closed_flag.Open} [Open]}. *)|Ptyp_classoflongident_loc*core_typelist(** [Ptyp_class(tconstr, l)] represents:
- [#tconstr] when [l=[]],
- [T #tconstr] when [l=[T]],
- [(T1, ..., Tn) #tconstr] when [l=[T1 ; ... ; Tn]]. *)|Ptyp_aliasofcore_type*stringloc(** [T as 'a]. *)|Ptyp_variantofrow_fieldlist*closed_flag*labellistoption(** [Ptyp_variant([`A;`B], flag, labels)] represents:
- [[ `A|`B ]] when [flag] is
{{!Asttypes.closed_flag.Closed} [Closed]}, and [labels] is [None],
- [[> `A|`B ]] when [flag] is {{!Asttypes.closed_flag.Open} [Open]},
and [labels] is [None],
- [[< `A|`B ]] when [flag] is
{{!Asttypes.closed_flag.Closed} [Closed]}, and [labels] is
[Some []],
- [[< `A|`B > `X `Y ]] when [flag] is
{{!Asttypes.closed_flag.Closed} [Closed]}, and [labels] is
[Some ["X";"Y"]]. *)|Ptyp_polyofstringloclist*core_type(** ['a1 ... 'an. T]
Can only appear in the following context:
- As the {!core_type} of a
{{!pattern_desc.Ppat_constraint} [Ppat_constraint]} node
corresponding to a constraint on a let-binding:
{[
let x : 'a1 ... 'an. T = e ...
]}
- Under {{!class_field_kind.Cfk_virtual} [Cfk_virtual]} for methods
(not values).
- As the {!core_type} of a
{{!class_type_field_desc.Pctf_method} [Pctf_method]} node.
- As the {!core_type} of a {{!expression_desc.Pexp_poly} [Pexp_poly]}
node.
- As the {{!label_declaration.pld_type} [pld_type]} field of a
{!label_declaration}.
- As a {!core_type} of a {{!core_type_desc.Ptyp_object} [Ptyp_object]}
node.
- As the {{!value_description.pval_type} [pval_type]} field of a
{!value_description}. *)|Ptyp_packageofpackage_type(** [(module S)]. *)|Ptyp_openoflongident_loc*core_type(** [M.(T)] *)|Ptyp_extensionofextension(** [[%id]]. *)andpackage_type=longident_loc*(longident_loc*core_type)list(** As {!package_type} typed values:
- [(S, [])] represents [(module S)],
- [(S, [(t1, T1) ; ... ; (tn, Tn)])] represents
[(module S with type t1 = T1 and ... and tn = Tn)]. *)androw_field=Parsetree.row_field={prf_desc:row_field_desc;prf_loc:location;prf_attributes:attributes;}androw_field_desc=Parsetree.row_field_desc=|Rtagoflabelloc*bool*core_typelist(** [Rtag(`A, b, l)] represents:
- [`A] when [b] is [true] and [l] is [[]],
- [`A of T] when [b] is [false] and [l] is [[T]],
- [`A of T1 & .. & Tn] when [b] is [false] and [l] is [[T1;...Tn]],
- [`A of & T1 & .. & Tn] when [b] is [true] and [l] is [[T1;...Tn]].
- The [bool] field is true if the tag contains a constant (empty)
constructor.
- [&] occurs when several types are used for the same constructor (see
4.2 in the manual) *)|Rinheritofcore_type(** [[ | t ]] *)andobject_field=Parsetree.object_field={pof_desc:object_field_desc;pof_loc:location;pof_attributes:attributes;}andobject_field_desc=Parsetree.object_field_desc=|Otagoflabelloc*core_type|Oinheritofcore_type(** {2 Patterns} *)andpattern=Parsetree.pattern={ppat_desc:pattern_desc;ppat_loc:location;ppat_loc_stack:location_stack;ppat_attributes:attributes;(** [... [\@id1] [\@id2]] *)}andpattern_desc=Parsetree.pattern_desc=|Ppat_any(** The pattern [_]. *)|Ppat_varofstringloc(** A variable pattern such as [x] *)|Ppat_aliasofpattern*stringloc(** An alias pattern such as [P as 'a] *)|Ppat_constantofconstant(** Patterns such as [1], ['a'], ["true"], [1.0], [1l], [1L], [1n] *)|Ppat_intervalofconstant*constant(** Patterns such as ['a'..'z'].
Other forms of interval are recognized by the parser but rejected by
the type-checker. *)|Ppat_tupleofpatternlist(** Patterns [(P1, ..., Pn)].
Invariant: [n >= 2] *)|Ppat_constructoflongident_loc*(stringloclist*pattern)option(** [Ppat_construct(C, args)] represents:
- [C] when [args] is [None],
- [C P] when [args] is [Some ([], P)]
- [C (P1, ..., Pn)] when [args] is
[Some ([], Ppat_tuple [P1; ...; Pn])]
- [C (type a b) P] when [args] is [Some ([a; b], P)] *)|Ppat_variantoflabel*patternoption(** [Ppat_variant(`A, pat)] represents:
- [`A] when [pat] is [None],
- [`A P] when [pat] is [Some P] *)|Ppat_recordof(longident_loc*pattern)list*closed_flag(** [Ppat_record([(l1, P1) ; ... ; (ln, Pn)], flag)] represents:
- [{ l1=P1; ...; ln=Pn }] when [flag] is
{{!Asttypes.closed_flag.Closed} [Closed]}
- [{ l1=P1; ...; ln=Pn; _}] when [flag] is
{{!Asttypes.closed_flag.Open} [Open]}
Invariant: [n > 0] *)|Ppat_arrayofpatternlist(** Pattern [[| P1; ...; Pn |]] *)|Ppat_orofpattern*pattern(** Pattern [P1 | P2] *)|Ppat_constraintofpattern*core_type(** Pattern [(P : T)] *)|Ppat_typeoflongident_loc(** Pattern [#tconst] *)|Ppat_lazyofpattern(** Pattern [lazy P] *)|Ppat_unpackofstringoptionloc(** [Ppat_unpack(s)] represents:
- [(module P)] when [s] is [Some "P"]
- [(module _)] when [s] is [None]
Note: [(module P : S)] is represented as
[Ppat_constraint(Ppat_unpack(Some "P"), Ptyp_package S)] *)|Ppat_exceptionofpattern(** Pattern [exception P] *)|Ppat_extensionofextension(** Pattern [[%id]] *)|Ppat_openoflongident_loc*pattern(** Pattern [M.(P)] *)(** {2 Value expressions} *)andexpression=Parsetree.expression={pexp_desc:expression_desc;pexp_loc:location;pexp_loc_stack:location_stack;pexp_attributes:attributes;(** [... [\@id1] [\@id2]] *)}andexpression_desc=Parsetree.expression_desc=|Pexp_identoflongident_loc(** Identifiers such as [x] and [M.x] *)|Pexp_constantofconstant(** Expressions constant such as [1], ['a'], ["true"], [1.0], [1l], [1L],
[1n] *)|Pexp_letofrec_flag*value_bindinglist*expression(** [Pexp_let(flag, [(P1,E1) ; ... ; (Pn,En)], E)] represents:
- [let P1 = E1 and ... and Pn = EN in E] when [flag] is
{{!Asttypes.rec_flag.Nonrecursive} [Nonrecursive]},
- [let rec P1 = E1 and ... and Pn = EN in E] when [flag] is
{{!Asttypes.rec_flag.Recursive} [Recursive]}. *)|Pexp_functionoffunction_paramlist*type_constraintoption*function_body(** [Pexp_function ([P1; ...; Pn], C, body)] represents any construct
involving [fun] or [function], including:
- [fun P1 ... Pn -> E] when [body = Pfunction_body E]
- [fun P1 ... Pn -> function p1 -> e1 | ... | pm -> em] when
[body = Pfunction_cases [ p1 -> e1; ...; pm -> em ]] [C] represents
a type constraint or coercion placed immediately before the arrow,
e.g. [fun P1 ... Pn : ty -> ...] when [C = Some (Pconstraint ty)]. A
function must have parameters. [Pexp_function (params, _, body)]
must have non-empty [params] or a [Pfunction_cases _] body. *)|Pexp_applyofexpression*(arg_label*expression)list(** [Pexp_apply(E0, [(l1, E1) ; ... ; (ln, En)])] represents
[E0 ~l1:E1 ... ~ln:En]
[li] can be {{!Asttypes.arg_label.Nolabel} [Nolabel]} (non labeled
argument), {{!Asttypes.arg_label.Labelled} [Labelled]} (labelled
arguments) or {{!Asttypes.arg_label.Optional} [Optional]} (optional
argument).
Invariant: [n > 0] *)|Pexp_matchofexpression*cases(** [match E0 with P1 -> E1 | ... | Pn -> En] *)|Pexp_tryofexpression*cases(** [try E0 with P1 -> E1 | ... | Pn -> En] *)|Pexp_tupleofexpressionlist(** Expressions [(E1, ..., En)]
Invariant: [n >= 2] *)|Pexp_constructoflongident_loc*expressionoption(** [Pexp_construct(C, exp)] represents:
- [C] when [exp] is [None],
- [C E] when [exp] is [Some E],
- [C (E1, ..., En)] when [exp] is [Some (Pexp_tuple[E1;...;En])] *)|Pexp_variantoflabel*expressionoption(** [Pexp_variant(`A, exp)] represents
- [`A] when [exp] is [None]
- [`A E] when [exp] is [Some E] *)|Pexp_recordof(longident_loc*expression)list*expressionoption(** [Pexp_record([(l1,P1) ; ... ; (ln,Pn)], exp0)] represents
- [{ l1=P1; ...; ln=Pn }] when [exp0] is [None]
- [{ E0 with l1=P1; ...; ln=Pn }] when [exp0] is [Some E0]
Invariant: [n > 0] *)|Pexp_fieldofexpression*longident_loc(** [E.l] *)|Pexp_setfieldofexpression*longident_loc*expression(** [E1.l <- E2] *)|Pexp_arrayofexpressionlist(** [[| E1; ...; En |]] *)|Pexp_ifthenelseofexpression*expression*expressionoption(** [if E1 then E2 else E3] *)|Pexp_sequenceofexpression*expression(** [E1; E2] *)|Pexp_whileofexpression*expression(** [while E1 do E2 done] *)|Pexp_forofpattern*expression*expression*direction_flag*expression(** [Pexp_for(i, E1, E2, direction, E3)] represents:
- [for i = E1 to E2 do E3 done] when [direction] is
{{!Asttypes.direction_flag.Upto} [Upto]}
- [for i = E1 downto E2 do E3 done] when [direction] is
{{!Asttypes.direction_flag.Downto} [Downto]} *)|Pexp_constraintofexpression*core_type(** [(E : T)] *)|Pexp_coerceofexpression*core_typeoption*core_type(** [Pexp_coerce(E, from, T)] represents
- [(E :> T)] when [from] is [None],
- [(E : T0 :> T)] when [from] is [Some T0]. *)|Pexp_sendofexpression*labelloc(** [E # m] *)|Pexp_newoflongident_loc(** [new M.c] *)|Pexp_setinstvaroflabelloc*expression(** [x <- 2] *)|Pexp_overrideof(labelloc*expression)list(** [{< x1 = E1; ...; xn = En >}] *)|Pexp_letmoduleofstringoptionloc*module_expr*expression(** [let module M = ME in E] *)|Pexp_letexceptionofextension_constructor*expression(** [let exception C in E] *)|Pexp_assertofexpression(** [assert E].
Note: [assert false] is treated in a special way by the type-checker.
*)|Pexp_lazyofexpression(** [lazy E] *)|Pexp_polyofexpression*core_typeoption(** Used for method bodies.
Can only be used as the expression under
{{!class_field_kind.Cfk_concrete} [Cfk_concrete]} for methods (not
values). *)|Pexp_objectofclass_structure(** [object ... end] *)|Pexp_newtypeofstringloc*expression(** [fun (type t) -> E] *)|Pexp_packofmodule_expr(** [(module ME)].
[(module ME : S)] is represented as
[Pexp_constraint(Pexp_pack ME, Ptyp_package S)] *)|Pexp_openofopen_declaration*expression(** - [M.(E)]
- [let open M in E]
- [let open! M in E] *)|Pexp_letopofletop(** - [let* P = E0 in E1]
- [let* P0 = E00 and* P1 = E01 in E1] *)|Pexp_extensionofextension(** [[%id]] *)|Pexp_unreachable(** [.] *)andcase=Parsetree.case={pc_lhs:pattern;pc_guard:expressionoption;pc_rhs:expression;}(** Values of type {!case} represents [(P -> E)] or [(P when E0 -> E)] *)andletop=Parsetree.letop={let_:binding_op;ands:binding_oplist;body:expression;}andbinding_op=Parsetree.binding_op={pbop_op:stringloc;pbop_pat:pattern;pbop_exp:expression;pbop_loc:location;}andfunction_param_desc=Parsetree.function_param_desc=|Pparam_valofarg_label*expressionoption*pattern(** [Pparam_val (lbl, exp0, P)] represents the parameter:
- [P] when [lbl] is {{!Asttypes.arg_label.Nolabel} [Nolabel]} and
[exp0] is [None]
- [~l:P] when [lbl] is {{!Asttypes.arg_label.Labelled} [Labelled l]}
and [exp0] is [None]
- [?l:P] when [lbl] is {{!Asttypes.arg_label.Optional} [Optional l]}
and [exp0] is [None]
- [?l:(P = E0)] when [lbl] is
{{!Asttypes.arg_label.Optional} [Optional l]} and [exp0] is
[Some E0]
Note: If [E0] is provided, only
{{!Asttypes.arg_label.Optional} [Optional]} is allowed. *)|Pparam_newtypeofstringloc(** [Pparam_newtype x] represents the parameter [(type x)]. [x] carries
the location of the identifier, whereas the [pparam_loc] on the
enclosing [function_param] node is the location of the [(type x)] as a
whole.
Multiple parameters [(type a b c)] are represented as multiple
[Pparam_newtype] nodes, let's say:
{[
[
{ pparam_kind = Pparam_newtype a; pparam_loc = loc1 };
{ pparam_kind = Pparam_newtype b; pparam_loc = loc2 };
{ pparam_kind = Pparam_newtype c; pparam_loc = loc3 };
]
]}
Here, the first loc [loc1] is the location of [(type a b c)], and the
subsequent locs [loc2] and [loc3] are the same as [loc1], except
marked as ghost locations. The locations on [a], [b], [c], correspond
to the variables [a], [b], and [c] in the source code. *)andfunction_param=Parsetree.function_param={pparam_loc:location;pparam_desc:function_param_desc;}(** See the comment on {{!expression_desc.Pexp_function} [Pexp_function]}. *)andfunction_body=Parsetree.function_body=|Pfunction_bodyofexpression|Pfunction_casesofcases*location*attributes(** In [Pfunction_cases (_, loc, attrs)], the location extends from the
start of the [function] keyword to the end of the last case. The
compiler will only use typechecking-related attributes from [attrs],
e.g. enabling or disabling a warning. *)andtype_constraint=Parsetree.type_constraint=|Pconstraintofcore_type|Pcoerceofcore_typeoption*core_type(** See the comment on {{!expression_desc.Pexp_function} [Pexp_function]}.
*)(** {2 Value descriptions} *)andvalue_description=Parsetree.value_description={pval_name:stringloc;pval_type:core_type;pval_prim:stringlist;pval_attributes:attributes;(** [... [\@\@id1] [\@\@id2]] *)pval_loc:location;}(** Values of type {!value_description} represents:
- [val x: T], when {{!value_description.pval_prim} [pval_prim]} is [[]]
- [external x: T = "s1" ... "sn"] when
{{!value_description.pval_prim} [pval_prim]} is [["s1";..."sn"]] *)(** {2 Type declarations} *)andtype_declaration=Parsetree.type_declaration={ptype_name:stringloc;ptype_params:(core_type*(variance*injectivity))list;(** [('a1,...'an) t] *)ptype_cstrs:(core_type*core_type*location)list;(** [... constraint T1=T1' ... constraint Tn=Tn'] *)ptype_kind:type_kind;ptype_private:private_flag;(** for [= private ...] *)ptype_manifest:core_typeoption;(** represents [= T] *)ptype_attributes:attributes;(** [... [\@\@id1] [\@\@id2]] *)ptype_loc:location;}(** Here are type declarations and their representation, for various
{{!type_declaration.ptype_kind} [ptype_kind]} and
{{!type_declaration.ptype_manifest} [ptype_manifest]} values:
- [type t] when [type_kind] is
{{!type_kind.Ptype_abstract} [Ptype_abstract]}, and [manifest] is [None],
- [type t = T0] when [type_kind] is
{{!type_kind.Ptype_abstract} [Ptype_abstract]}, and [manifest] is
[Some T0],
- [type t = C of T | ...] when [type_kind] is
{{!type_kind.Ptype_variant} [Ptype_variant]}, and [manifest] is [None],
- [type t = T0 = C of T | ...] when [type_kind] is
{{!type_kind.Ptype_variant} [Ptype_variant]}, and [manifest] is [Some T0],
- [type t = {l: T; ...}] when [type_kind] is
{{!type_kind.Ptype_record} [Ptype_record]}, and [manifest] is [None],
- [type t = T0 = {l : T; ...}] when [type_kind] is
{{!type_kind.Ptype_record} [Ptype_record]}, and [manifest] is [Some T0],
- [type t = ..] when [type_kind] is {{!type_kind.Ptype_open} [Ptype_open]},
and [manifest] is [None]. *)andtype_kind=Parsetree.type_kind=|Ptype_abstract|Ptype_variantofconstructor_declarationlist|Ptype_recordoflabel_declarationlist(** Invariant: non-empty list *)|Ptype_openandlabel_declaration=Parsetree.label_declaration={pld_name:stringloc;pld_mutable:mutable_flag;pld_type:core_type;pld_loc:location;pld_attributes:attributes;(** [l : T [\@id1] [\@id2]] *)}(** - [{ ...; l: T; ... }] when {{!label_declaration.pld_mutable} [pld_mutable]}
is {{!Asttypes.mutable_flag.Immutable} [Immutable]},
- [{ ...; mutable l: T; ... }] when
{{!label_declaration.pld_mutable} [pld_mutable]} is
{{!Asttypes.mutable_flag.Mutable} [Mutable]}.
Note: [T] can be a {{!core_type_desc.Ptyp_poly} [Ptyp_poly]}. *)andconstructor_declaration=Parsetree.constructor_declaration={pcd_name:stringloc;pcd_vars:stringloclist;pcd_args:constructor_arguments;pcd_res:core_typeoption;pcd_loc:location;pcd_attributes:attributes;(** [C of ... [\@id1] [\@id2]] *)}andconstructor_arguments=Parsetree.constructor_arguments=|Pcstr_tupleofcore_typelist|Pcstr_recordoflabel_declarationlist(** Values of type {!constructor_declaration} represents the constructor
arguments of:
- [C of T1 * ... * Tn] when [res = None], and
[args = Pcstr_tuple [T1; ... ; Tn]],
- [C: T0] when [res = Some T0], and [args = Pcstr_tuple []],
- [C: T1 * ... * Tn -> T0] when [res = Some T0], and
[args = Pcstr_tuple [T1; ... ; Tn]],
- [C of {...}] when [res = None], and [args = Pcstr_record [...]],
- [C: {...} -> T0] when [res = Some T0], and
[args = Pcstr_record [...]]. *)andtype_extension=Parsetree.type_extension={ptyext_path:longident_loc;ptyext_params:(core_type*(variance*injectivity))list;ptyext_constructors:extension_constructorlist;ptyext_private:private_flag;ptyext_loc:location;ptyext_attributes:attributes;(** ... [\@\@id1] [\@\@id2] *)}(** Definition of new extensions constructors for the extensive sum type [t]
([type t += ...]). *)andextension_constructor=Parsetree.extension_constructor={pext_name:stringloc;pext_kind:extension_constructor_kind;pext_loc:location;pext_attributes:attributes;(** [C of ... [\@id1] [\@id2]] *)}andtype_exception=Parsetree.type_exception={ptyexn_constructor:extension_constructor;ptyexn_loc:location;ptyexn_attributes:attributes;(** [... [\@\@id1] [\@\@id2]] *)}(** Definition of a new exception ([exception E]). *)andextension_constructor_kind=Parsetree.extension_constructor_kind=|Pext_declofstringloclist*constructor_arguments*core_typeoption(** [Pext_decl(existentials, c_args, t_opt)] describes a new extension
constructor. It can be:
{ul
{- [C of T1 * ... * Tn] when:
- [existentials] is [[]],
- [c_args] is [[T1; ...; Tn]],
- [t_opt] is [None].
}
{- [C: T0] when
- [existentials] is [[]],
- [c_args] is [[]],
- [t_opt] is [Some T0].
}
{- [C: T1 * ... * Tn -> T0] when
- [existentials] is [[]],
- [c_args] is [[T1; ...; Tn]],
- [t_opt] is [Some T0].
}
{- [C: 'a... . T1 * ... * Tn -> T0] when
- [existentials] is [['a;...]],
- [c_args] is [[T1; ... ; Tn]],
- [t_opt] is [Some T0].
}
} *)|Pext_rebindoflongident_loc(** [Pext_rebind(D)] re-export the constructor [D] with the new name [C]
*)(** {1 Class language} *)(** {2 Type expressions for the class language} *)andclass_type=Parsetree.class_type={pcty_desc:class_type_desc;pcty_loc:location;pcty_attributes:attributes;(** [... [\@id1] [\@id2]] *)}andclass_type_desc=Parsetree.class_type_desc=|Pcty_constroflongident_loc*core_typelist(** - [c]
- [['a1, ..., 'an] c] *)|Pcty_signatureofclass_signature(** [object ... end] *)|Pcty_arrowofarg_label*core_type*class_type(** [Pcty_arrow(lbl, T, CT)] represents:
- [T -> CT] when [lbl] is {{!Asttypes.arg_label.Nolabel} [Nolabel]},
- [~l:T -> CT] when [lbl] is
{{!Asttypes.arg_label.Labelled} [Labelled l]},
- [?l:T -> CT] when [lbl] is
{{!Asttypes.arg_label.Optional} [Optional l]}. *)|Pcty_extensionofextension(** [%id] *)|Pcty_openofopen_description*class_type(** [let open M in CT] *)andclass_signature=Parsetree.class_signature={pcsig_self:core_type;pcsig_fields:class_type_fieldlist;}(** Values of type [class_signature] represents:
- [object('selfpat) ... end]
- [object ... end] when {{!class_signature.pcsig_self} [pcsig_self]} is
{{!core_type_desc.Ptyp_any} [Ptyp_any]} *)andclass_type_field=Parsetree.class_type_field={pctf_desc:class_type_field_desc;pctf_loc:location;pctf_attributes:attributes;(** [... [\@\@id1] [\@\@id2]] *)}andclass_type_field_desc=Parsetree.class_type_field_desc=|Pctf_inheritofclass_type(** [inherit CT] *)|Pctf_valof(labelloc*mutable_flag*virtual_flag*core_type)(** [val x: T] *)|Pctf_methodof(labelloc*private_flag*virtual_flag*core_type)(** [method x: T]
Note: [T] can be a {{!core_type_desc.Ptyp_poly} [Ptyp_poly]}. *)|Pctf_constraintof(core_type*core_type)(** [constraint T1 = T2] *)|Pctf_attributeofattribute(** [[\@\@\@id]] *)|Pctf_extensionofextension(** [[%%id]] *)and'aclass_infos='aParsetree.class_infos={pci_virt:virtual_flag;pci_params:(core_type*(variance*injectivity))list;pci_name:stringloc;pci_expr:'a;pci_loc:location;pci_attributes:attributes;(** [... [\@\@id1] [\@\@id2]] *)}(** Values of type [class_expr class_infos] represents:
- [class c = ...]
- [class ['a1,...,'an] c = ...]
- [class virtual c = ...]
They are also used for "class type" declaration. *)andclass_description=class_typeclass_infosandclass_type_declaration=class_typeclass_infos(** {2 Value expressions for the class language} *)andclass_expr=Parsetree.class_expr={pcl_desc:class_expr_desc;pcl_loc:location;pcl_attributes:attributes;(** [... [\@id1] [\@id2]] *)}andclass_expr_desc=Parsetree.class_expr_desc=|Pcl_constroflongident_loc*core_typelist(** [c] and [['a1, ..., 'an] c] *)|Pcl_structureofclass_structure(** [object ... end] *)|Pcl_funofarg_label*expressionoption*pattern*class_expr(** [Pcl_fun(lbl, exp0, P, CE)] represents:
- [fun P -> CE] when [lbl] is
{{!Asttypes.arg_label.Nolabel} [Nolabel]} and [exp0] is [None],
- [fun ~l:P -> CE] when [lbl] is
{{!Asttypes.arg_label.Labelled} [Labelled l]} and [exp0] is [None],
- [fun ?l:P -> CE] when [lbl] is
{{!Asttypes.arg_label.Optional} [Optional l]} and [exp0] is [None],
- [fun ?l:(P = E0) -> CE] when [lbl] is
{{!Asttypes.arg_label.Optional} [Optional l]} and [exp0] is
[Some E0]. *)|Pcl_applyofclass_expr*(arg_label*expression)list(** [Pcl_apply(CE, [(l1,E1) ; ... ; (ln,En)])] represents
[CE ~l1:E1 ... ~ln:En]. [li] can be empty (non labeled argument) or
start with [?] (optional argument).
Invariant: [n > 0] *)|Pcl_letofrec_flag*value_bindinglist*class_expr(** [Pcl_let(rec, [(P1, E1); ... ; (Pn, En)], CE)] represents:
- [let P1 = E1 and ... and Pn = EN in CE] when [rec] is
{{!Asttypes.rec_flag.Nonrecursive} [Nonrecursive]},
- [let rec P1 = E1 and ... and Pn = EN in CE] when [rec] is
{{!Asttypes.rec_flag.Recursive} [Recursive]}. *)|Pcl_constraintofclass_expr*class_type(** [(CE : CT)] *)|Pcl_extensionofextension(** [[%id]] *)|Pcl_openofopen_description*class_expr(** [let open M in CE] *)andclass_structure=Parsetree.class_structure={pcstr_self:pattern;pcstr_fields:class_fieldlist;}(** Values of type {!class_structure} represents:
- [object(selfpat) ... end]
- [object ... end] when {{!class_structure.pcstr_self} [pcstr_self]} is
{{!pattern_desc.Ppat_any} [Ppat_any]} *)andclass_field=Parsetree.class_field={pcf_desc:class_field_desc;pcf_loc:location;pcf_attributes:attributes;(** [... [\@\@id1] [\@\@id2]] *)}andclass_field_desc=Parsetree.class_field_desc=|Pcf_inheritofoverride_flag*class_expr*stringlocoption(** [Pcf_inherit(flag, CE, s)] represents:
- [inherit CE] when [flag] is
{{!Asttypes.override_flag.Fresh} [Fresh]} and [s] is [None],
- [inherit CE as x] when [flag] is
{{!Asttypes.override_flag.Fresh} [Fresh]} and [s] is [Some x],
- [inherit! CE] when [flag] is
{{!Asttypes.override_flag.Override} [Override]} and [s] is [None],
- [inherit! CE as x] when [flag] is
{{!Asttypes.override_flag.Override} [Override]} and [s] is [Some x]
*)|Pcf_valof(labelloc*mutable_flag*class_field_kind)(** [Pcf_val(x,flag, kind)] represents:
- [val x = E] when [flag] is
{{!Asttypes.mutable_flag.Immutable} [Immutable]} and [kind] is
{{!class_field_kind.Cfk_concrete} [Cfk_concrete(Fresh, E)]}
- [val virtual x: T] when [flag] is
{{!Asttypes.mutable_flag.Immutable} [Immutable]} and [kind] is
{{!class_field_kind.Cfk_virtual} [Cfk_virtual(T)]}
- [val mutable x = E] when [flag] is
{{!Asttypes.mutable_flag.Mutable} [Mutable]} and [kind] is
{{!class_field_kind.Cfk_concrete} [Cfk_concrete(Fresh, E)]}
- [val mutable virtual x: T] when [flag] is
{{!Asttypes.mutable_flag.Mutable} [Mutable]} and [kind] is
{{!class_field_kind.Cfk_virtual} [Cfk_virtual(T)]} *)|Pcf_methodof(labelloc*private_flag*class_field_kind)(** - [method x = E] ([E] can be a
{{!expression_desc.Pexp_poly} [Pexp_poly]})
- [method virtual x: T] ([T] can be a
{{!core_type_desc.Ptyp_poly} [Ptyp_poly]}) *)|Pcf_constraintof(core_type*core_type)(** [constraint T1 = T2] *)|Pcf_initializerofexpression(** [initializer E] *)|Pcf_attributeofattribute(** [[\@\@\@id]] *)|Pcf_extensionofextension(** [[%%id]] *)andclass_field_kind=Parsetree.class_field_kind=|Cfk_virtualofcore_type|Cfk_concreteofoverride_flag*expressionandclass_declaration=class_exprclass_infos(** {1 Module language} *)(** {2 Type expressions for the module language} *)andmodule_type=Parsetree.module_type={pmty_desc:module_type_desc;pmty_loc:location;pmty_attributes:attributes;(** [... [\@id1] [\@id2]] *)}andmodule_type_desc=Parsetree.module_type_desc=|Pmty_identoflongident_loc(** [Pmty_ident(S)] represents [S] *)|Pmty_signatureofsignature(** [sig ... end] *)|Pmty_functoroffunctor_parameter*module_type(** [functor(X : MT1) -> MT2] *)|Pmty_withofmodule_type*with_constraintlist(** [MT with ...] *)|Pmty_typeofofmodule_expr(** [module type of ME] *)|Pmty_extensionofextension(** [[%id]] *)|Pmty_aliasoflongident_loc(** [(module M)] *)andfunctor_parameter=Parsetree.functor_parameter=|Unit(** [()] *)|Namedofstringoptionloc*module_type(** [Named(name, MT)] represents:
- [(X : MT)] when [name] is [Some X],
- [(_ : MT)] when [name] is [None] *)andsignature=signature_itemlistandsignature_item=Parsetree.signature_item={psig_desc:signature_item_desc;psig_loc:location;}andsignature_item_desc=Parsetree.signature_item_desc=|Psig_valueofvalue_description(** - [val x: T]
- [external x: T = "s1" ... "sn"] *)|Psig_typeofrec_flag*type_declarationlist(** [type t1 = ... and ... and tn = ...] *)|Psig_typesubstoftype_declarationlist(** [type t1 := ... and ... and tn := ...] *)|Psig_typextoftype_extension(** [type t1 += ...] *)|Psig_exceptionoftype_exception(** [exception C of T] *)|Psig_moduleofmodule_declaration(** [module X = M] and [module X : MT] *)|Psig_modsubstofmodule_substitution(** [module X := M] *)|Psig_recmoduleofmodule_declarationlist(** [module rec X1 : MT1 and ... and Xn : MTn] *)|Psig_modtypeofmodule_type_declaration(** [module type S = MT] and [module type S] *)|Psig_modtypesubstofmodule_type_declaration(** [module type S := ...] *)|Psig_openofopen_description(** [open X] *)|Psig_includeofinclude_description(** [include MT] *)|Psig_classofclass_descriptionlist(** [class c1 : ... and ... and cn : ...] *)|Psig_class_typeofclass_type_declarationlist(** [class type ct1 = ... and ... and ctn = ...] *)|Psig_attributeofattribute(** [[\@\@\@id]] *)|Psig_extensionofextension*attributes(** [[%%id]] *)andmodule_declaration=Parsetree.module_declaration={pmd_name:stringoptionloc;pmd_type:module_type;pmd_attributes:attributes;(** [... [\@\@id1] [\@\@id2]] *)pmd_loc:location;}(** Values of type [module_declaration] represents [S : MT] *)andmodule_substitution=Parsetree.module_substitution={pms_name:stringloc;pms_manifest:longident_loc;pms_attributes:attributes;(** [... [\@\@id1] [\@\@id2]] *)pms_loc:location;}(** Values of type [module_substitution] represents [S := M] *)andmodule_type_declaration=Parsetree.module_type_declaration={pmtd_name:stringloc;pmtd_type:module_typeoption;pmtd_attributes:attributes;(** [... [\@\@id1] [\@\@id2]] *)pmtd_loc:location;}(** Values of type [module_type_declaration] represents:
- [S = MT],
- [S] for abstract module type declaration, when
{{!module_type_declaration.pmtd_type} [pmtd_type]} is [None]. *)and'aopen_infos='aParsetree.open_infos={popen_expr:'a;popen_override:override_flag;popen_loc:location;popen_attributes:attributes;}(** Values of type ['a open_infos] represents:
- [open! X] when {{!open_infos.popen_override} [popen_override]} is
{{!Asttypes.override_flag.Override} [Override]} (silences the "used
identifier shadowing" warning)
- [open X] when {{!open_infos.popen_override} [popen_override]} is
{{!Asttypes.override_flag.Fresh} [Fresh]} *)andopen_description=longident_locopen_infos(** Values of type [open_description] represents:
- [open M.N]
- [open M(N).O] *)andopen_declaration=module_expropen_infos(** Values of type [open_declaration] represents:
- [open M.N]
- [open M(N).O]
- [open struct ... end] *)and'ainclude_infos='aParsetree.include_infos={pincl_mod:'a;pincl_loc:location;pincl_attributes:attributes;}andinclude_description=module_typeinclude_infos(** Values of type [include_description] represents [include MT] *)andinclude_declaration=module_exprinclude_infos(** Values of type [include_declaration] represents [include ME] *)andwith_constraint=Parsetree.with_constraint=|Pwith_typeoflongident_loc*type_declaration(** [with type X.t = ...]
Note: the last component of the longident must match the name of the
type_declaration. *)|Pwith_moduleoflongident_loc*longident_loc(** [with module X.Y = Z] *)|Pwith_modtypeoflongident_loc*module_type(** [with module type X.Y = Z] *)|Pwith_modtypesubstoflongident_loc*module_type(** [with module type X.Y := sig end] *)|Pwith_typesubstoflongident_loc*type_declaration(** [with type X.t := ..., same format as [Pwith_type]] *)|Pwith_modsubstoflongident_loc*longident_loc(** [with module X.Y := Z] *)(** {2 Value expressions for the module language} *)andmodule_expr=Parsetree.module_expr={pmod_desc:module_expr_desc;pmod_loc:location;pmod_attributes:attributes;(** [... [\@id1] [\@id2]] *)}andmodule_expr_desc=Parsetree.module_expr_desc=|Pmod_identoflongident_loc(** [X] *)|Pmod_structureofstructure(** [struct ... end] *)|Pmod_functoroffunctor_parameter*module_expr(** [functor(X : MT1) -> ME] *)|Pmod_applyofmodule_expr*module_expr(** [ME1(ME2)] *)|Pmod_apply_unitofmodule_expr(** [ME1()] *)|Pmod_constraintofmodule_expr*module_type(** [(ME : MT)] *)|Pmod_unpackofexpression(** [(val E)] *)|Pmod_extensionofextension(** [[%id]] *)andstructure=structure_itemlistandstructure_item=Parsetree.structure_item={pstr_desc:structure_item_desc;pstr_loc:location;}andstructure_item_desc=Parsetree.structure_item_desc=|Pstr_evalofexpression*attributes(** [E] *)|Pstr_valueofrec_flag*value_bindinglist(** [Pstr_value(rec, [(P1, E1 ; ... ; (Pn, En))])] represents:
- [let P1 = E1 and ... and Pn = EN] when [rec] is
{{!Asttypes.rec_flag.Nonrecursive} [Nonrecursive]},
- [let rec P1 = E1 and ... and Pn = EN ] when [rec] is
{{!Asttypes.rec_flag.Recursive} [Recursive]}. *)|Pstr_primitiveofvalue_description(** - [val x: T]
- [external x: T = "s1" ... "sn" ]*)|Pstr_typeofrec_flag*type_declarationlist(** [type t1 = ... and ... and tn = ...] *)|Pstr_typextoftype_extension(** [type t1 += ...] *)|Pstr_exceptionoftype_exception(** - [exception C of T]
- [exception C = M.X] *)|Pstr_moduleofmodule_binding(** [module X = ME] *)|Pstr_recmoduleofmodule_bindinglist(** [module rec X1 = ME1 and ... and Xn = MEn] *)|Pstr_modtypeofmodule_type_declaration(** [module type S = MT] *)|Pstr_openofopen_declaration(** [open X] *)|Pstr_classofclass_declarationlist(** [class c1 = ... and ... and cn = ...] *)|Pstr_class_typeofclass_type_declarationlist(** [class type ct1 = ... and ... and ctn = ...] *)|Pstr_includeofinclude_declaration(** [include ME] *)|Pstr_attributeofattribute(** [[\@\@\@id]] *)|Pstr_extensionofextension*attributes(** [[%%id]] *)andvalue_constraint=Parsetree.value_constraint=|Pvc_constraintof{locally_abstract_univars:stringloclist;typ:core_type;}|Pvc_coercionof{ground:core_typeoption;coercion:core_type}andvalue_binding=Parsetree.value_binding={pvb_pat:pattern;pvb_expr:expression;pvb_constraint:value_constraintoption;pvb_attributes:attributes;pvb_loc:location;}andmodule_binding=Parsetree.module_binding={pmb_name:stringoptionloc;pmb_expr:module_expr;pmb_attributes:attributes;pmb_loc:location;}(** Values of type [module_binding] represents [module X = ME] *)(** {1 Toplevel} *)(** {2 Toplevel phrases} *)andtoplevel_phrase=Parsetree.toplevel_phrase=|Ptop_defofstructure|Ptop_diroftoplevel_directive(** [#use], [#load] ... *)andtoplevel_directive=Parsetree.toplevel_directive={pdir_name:stringloc;pdir_arg:directive_argumentoption;pdir_loc:location;}anddirective_argument=Parsetree.directive_argument={pdira_desc:directive_argument_desc;pdira_loc:location;}anddirective_argument_desc=Parsetree.directive_argument_desc=|Pdir_stringofstring|Pdir_intofstring*charoption|Pdir_identoflongident|Pdir_boolofboolandcases=caselist[@@deriving_inlinetraverse]classvirtualmap=object(self)methodvirtualbool:bool->boolmethodvirtualchar:char->charmethodvirtualint:int->intmethodvirtuallist:'a.('a->'a)->'alist->'alistmethodvirtualoption:'a.('a->'a)->'aoption->'aoptionmethodvirtualstring:string->stringmethodposition:position->position=fun{pos_fname;pos_lnum;pos_bol;pos_cnum}->letpos_fname=self#stringpos_fnameinletpos_lnum=self#intpos_lnuminletpos_bol=self#intpos_bolinletpos_cnum=self#intpos_cnumin{pos_fname;pos_lnum;pos_bol;pos_cnum}methodlocation:location->location=fun{loc_start;loc_end;loc_ghost}->letloc_start=self#positionloc_startinletloc_end=self#positionloc_endinletloc_ghost=self#boolloc_ghostin{loc_start;loc_end;loc_ghost}methodlocation_stack:location_stack->location_stack=self#listself#locationmethodloc:'a.('a->'a)->'aloc->'aloc=fun_a{txt;loc}->lettxt=_atxtinletloc=self#locationlocin{txt;loc}methodlongident:longident->longident=funx->matchxwith|Lidenta->leta=self#stringainLidenta|Ldot(a,b)->leta=self#longidentainletb=self#stringbinLdot(a,b)|Lapply(a,b)->leta=self#longidentainletb=self#longidentbinLapply(a,b)methodlongident_loc:longident_loc->longident_loc=self#locself#longidentmethodrec_flag:rec_flag->rec_flag=funx->xmethoddirection_flag:direction_flag->direction_flag=funx->xmethodprivate_flag:private_flag->private_flag=funx->xmethodmutable_flag:mutable_flag->mutable_flag=funx->xmethodvirtual_flag:virtual_flag->virtual_flag=funx->xmethodoverride_flag:override_flag->override_flag=funx->xmethodclosed_flag:closed_flag->closed_flag=funx->xmethodlabel:label->label=self#stringmethodarg_label:arg_label->arg_label=funx->matchxwith|Nolabel->Nolabel|Labelleda->leta=self#stringainLabelleda|Optionala->leta=self#stringainOptionalamethodvariance:variance->variance=funx->xmethodinjectivity:injectivity->injectivity=funx->xmethodconstant:constant->constant=funx->matchxwith|Pconst_integer(a,b)->leta=self#stringainletb=self#optionself#charbinPconst_integer(a,b)|Pconst_chara->leta=self#charainPconst_chara|Pconst_string(a,b,c)->leta=self#stringainletb=self#locationbinletc=self#optionself#stringcinPconst_string(a,b,c)|Pconst_float(a,b)->leta=self#stringainletb=self#optionself#charbinPconst_float(a,b)methodattribute:attribute->attribute=fun{attr_name;attr_payload;attr_loc}->letattr_name=self#locself#stringattr_nameinletattr_payload=self#payloadattr_payloadinletattr_loc=self#locationattr_locin{attr_name;attr_payload;attr_loc}methodextension:extension->extension=fun(a,b)->leta=self#locself#stringainletb=self#payloadbin(a,b)methodattributes:attributes->attributes=self#listself#attributemethodpayload:payload->payload=funx->matchxwith|PStra->leta=self#structureainPStra|PSiga->leta=self#signatureainPSiga|PTypa->leta=self#core_typeainPTypa|PPat(a,b)->leta=self#patternainletb=self#optionself#expressionbinPPat(a,b)methodcore_type:core_type->core_type=fun{ptyp_desc;ptyp_loc;ptyp_loc_stack;ptyp_attributes}->letptyp_desc=self#core_type_descptyp_descinletptyp_loc=self#locationptyp_locinletptyp_loc_stack=self#location_stackptyp_loc_stackinletptyp_attributes=self#attributesptyp_attributesin{ptyp_desc;ptyp_loc;ptyp_loc_stack;ptyp_attributes}methodcore_type_desc:core_type_desc->core_type_desc=funx->matchxwith|Ptyp_any->Ptyp_any|Ptyp_vara->leta=self#stringainPtyp_vara|Ptyp_arrow(a,b,c)->leta=self#arg_labelainletb=self#core_typebinletc=self#core_typecinPtyp_arrow(a,b,c)|Ptyp_tuplea->leta=self#listself#core_typeainPtyp_tuplea|Ptyp_constr(a,b)->leta=self#longident_locainletb=self#listself#core_typebinPtyp_constr(a,b)|Ptyp_object(a,b)->leta=self#listself#object_fieldainletb=self#closed_flagbinPtyp_object(a,b)|Ptyp_class(a,b)->leta=self#longident_locainletb=self#listself#core_typebinPtyp_class(a,b)|Ptyp_alias(a,b)->leta=self#core_typeainletb=self#locself#stringbinPtyp_alias(a,b)|Ptyp_variant(a,b,c)->leta=self#listself#row_fieldainletb=self#closed_flagbinletc=self#option(self#listself#label)cinPtyp_variant(a,b,c)|Ptyp_poly(a,b)->leta=self#list(self#locself#string)ainletb=self#core_typebinPtyp_poly(a,b)|Ptyp_packagea->leta=self#package_typeainPtyp_packagea|Ptyp_open(a,b)->leta=self#longident_locainletb=self#core_typebinPtyp_open(a,b)|Ptyp_extensiona->leta=self#extensionainPtyp_extensionamethodpackage_type:package_type->package_type=fun(a,b)->leta=self#longident_locainletb=self#list(fun(a,b)->leta=self#longident_locainletb=self#core_typebin(a,b))bin(a,b)methodrow_field:row_field->row_field=fun{prf_desc;prf_loc;prf_attributes}->letprf_desc=self#row_field_descprf_descinletprf_loc=self#locationprf_locinletprf_attributes=self#attributesprf_attributesin{prf_desc;prf_loc;prf_attributes}methodrow_field_desc:row_field_desc->row_field_desc=funx->matchxwith|Rtag(a,b,c)->leta=self#locself#labelainletb=self#boolbinletc=self#listself#core_typecinRtag(a,b,c)|Rinherita->leta=self#core_typeainRinheritamethodobject_field:object_field->object_field=fun{pof_desc;pof_loc;pof_attributes}->letpof_desc=self#object_field_descpof_descinletpof_loc=self#locationpof_locinletpof_attributes=self#attributespof_attributesin{pof_desc;pof_loc;pof_attributes}methodobject_field_desc:object_field_desc->object_field_desc=funx->matchxwith|Otag(a,b)->leta=self#locself#labelainletb=self#core_typebinOtag(a,b)|Oinherita->leta=self#core_typeainOinheritamethodpattern:pattern->pattern=fun{ppat_desc;ppat_loc;ppat_loc_stack;ppat_attributes}->letppat_desc=self#pattern_descppat_descinletppat_loc=self#locationppat_locinletppat_loc_stack=self#location_stackppat_loc_stackinletppat_attributes=self#attributesppat_attributesin{ppat_desc;ppat_loc;ppat_loc_stack;ppat_attributes}methodpattern_desc:pattern_desc->pattern_desc=funx->matchxwith|Ppat_any->Ppat_any|Ppat_vara->leta=self#locself#stringainPpat_vara|Ppat_alias(a,b)->leta=self#patternainletb=self#locself#stringbinPpat_alias(a,b)|Ppat_constanta->leta=self#constantainPpat_constanta|Ppat_interval(a,b)->leta=self#constantainletb=self#constantbinPpat_interval(a,b)|Ppat_tuplea->leta=self#listself#patternainPpat_tuplea|Ppat_construct(a,b)->leta=self#longident_locainletb=self#option(fun(a,b)->leta=self#list(self#locself#string)ainletb=self#patternbin(a,b))binPpat_construct(a,b)|Ppat_variant(a,b)->leta=self#labelainletb=self#optionself#patternbinPpat_variant(a,b)|Ppat_record(a,b)->leta=self#list(fun(a,b)->leta=self#longident_locainletb=self#patternbin(a,b))ainletb=self#closed_flagbinPpat_record(a,b)|Ppat_arraya->leta=self#listself#patternainPpat_arraya|Ppat_or(a,b)->leta=self#patternainletb=self#patternbinPpat_or(a,b)|Ppat_constraint(a,b)->leta=self#patternainletb=self#core_typebinPpat_constraint(a,b)|Ppat_typea->leta=self#longident_locainPpat_typea|Ppat_lazya->leta=self#patternainPpat_lazya|Ppat_unpacka->leta=self#loc(self#optionself#string)ainPpat_unpacka|Ppat_exceptiona->leta=self#patternainPpat_exceptiona|Ppat_extensiona->leta=self#extensionainPpat_extensiona|Ppat_open(a,b)->leta=self#longident_locainletb=self#patternbinPpat_open(a,b)methodexpression:expression->expression=fun{pexp_desc;pexp_loc;pexp_loc_stack;pexp_attributes}->letpexp_desc=self#expression_descpexp_descinletpexp_loc=self#locationpexp_locinletpexp_loc_stack=self#location_stackpexp_loc_stackinletpexp_attributes=self#attributespexp_attributesin{pexp_desc;pexp_loc;pexp_loc_stack;pexp_attributes}methodexpression_desc:expression_desc->expression_desc=funx->matchxwith|Pexp_identa->leta=self#longident_locainPexp_identa|Pexp_constanta->leta=self#constantainPexp_constanta|Pexp_let(a,b,c)->leta=self#rec_flagainletb=self#listself#value_bindingbinletc=self#expressioncinPexp_let(a,b,c)|Pexp_function(a,b,c)->leta=self#listself#function_paramainletb=self#optionself#type_constraintbinletc=self#function_bodycinPexp_function(a,b,c)|Pexp_apply(a,b)->leta=self#expressionainletb=self#list(fun(a,b)->leta=self#arg_labelainletb=self#expressionbin(a,b))binPexp_apply(a,b)|Pexp_match(a,b)->leta=self#expressionainletb=self#casesbinPexp_match(a,b)|Pexp_try(a,b)->leta=self#expressionainletb=self#casesbinPexp_try(a,b)|Pexp_tuplea->leta=self#listself#expressionainPexp_tuplea|Pexp_construct(a,b)->leta=self#longident_locainletb=self#optionself#expressionbinPexp_construct(a,b)|Pexp_variant(a,b)->leta=self#labelainletb=self#optionself#expressionbinPexp_variant(a,b)|Pexp_record(a,b)->leta=self#list(fun(a,b)->leta=self#longident_locainletb=self#expressionbin(a,b))ainletb=self#optionself#expressionbinPexp_record(a,b)|Pexp_field(a,b)->leta=self#expressionainletb=self#longident_locbinPexp_field(a,b)|Pexp_setfield(a,b,c)->leta=self#expressionainletb=self#longident_locbinletc=self#expressioncinPexp_setfield(a,b,c)|Pexp_arraya->leta=self#listself#expressionainPexp_arraya|Pexp_ifthenelse(a,b,c)->leta=self#expressionainletb=self#expressionbinletc=self#optionself#expressioncinPexp_ifthenelse(a,b,c)|Pexp_sequence(a,b)->leta=self#expressionainletb=self#expressionbinPexp_sequence(a,b)|Pexp_while(a,b)->leta=self#expressionainletb=self#expressionbinPexp_while(a,b)|Pexp_for(a,b,c,d,e)->leta=self#patternainletb=self#expressionbinletc=self#expressioncinletd=self#direction_flagdinlete=self#expressioneinPexp_for(a,b,c,d,e)|Pexp_constraint(a,b)->leta=self#expressionainletb=self#core_typebinPexp_constraint(a,b)|Pexp_coerce(a,b,c)->leta=self#expressionainletb=self#optionself#core_typebinletc=self#core_typecinPexp_coerce(a,b,c)|Pexp_send(a,b)->leta=self#expressionainletb=self#locself#labelbinPexp_send(a,b)|Pexp_newa->leta=self#longident_locainPexp_newa|Pexp_setinstvar(a,b)->leta=self#locself#labelainletb=self#expressionbinPexp_setinstvar(a,b)|Pexp_overridea->leta=self#list(fun(a,b)->leta=self#locself#labelainletb=self#expressionbin(a,b))ainPexp_overridea|Pexp_letmodule(a,b,c)->leta=self#loc(self#optionself#string)ainletb=self#module_exprbinletc=self#expressioncinPexp_letmodule(a,b,c)|Pexp_letexception(a,b)->leta=self#extension_constructorainletb=self#expressionbinPexp_letexception(a,b)|Pexp_asserta->leta=self#expressionainPexp_asserta|Pexp_lazya->leta=self#expressionainPexp_lazya|Pexp_poly(a,b)->leta=self#expressionainletb=self#optionself#core_typebinPexp_poly(a,b)|Pexp_objecta->leta=self#class_structureainPexp_objecta|Pexp_newtype(a,b)->leta=self#locself#stringainletb=self#expressionbinPexp_newtype(a,b)|Pexp_packa->leta=self#module_exprainPexp_packa|Pexp_open(a,b)->leta=self#open_declarationainletb=self#expressionbinPexp_open(a,b)|Pexp_letopa->leta=self#letopainPexp_letopa|Pexp_extensiona->leta=self#extensionainPexp_extensiona|Pexp_unreachable->Pexp_unreachablemethodcase:case->case=fun{pc_lhs;pc_guard;pc_rhs}->letpc_lhs=self#patternpc_lhsinletpc_guard=self#optionself#expressionpc_guardinletpc_rhs=self#expressionpc_rhsin{pc_lhs;pc_guard;pc_rhs}methodletop:letop->letop=fun{let_;ands;body}->letlet_=self#binding_oplet_inletands=self#listself#binding_opandsinletbody=self#expressionbodyin{let_;ands;body}methodbinding_op:binding_op->binding_op=fun{pbop_op;pbop_pat;pbop_exp;pbop_loc}->letpbop_op=self#locself#stringpbop_opinletpbop_pat=self#patternpbop_patinletpbop_exp=self#expressionpbop_expinletpbop_loc=self#locationpbop_locin{pbop_op;pbop_pat;pbop_exp;pbop_loc}methodfunction_param_desc:function_param_desc->function_param_desc=funx->matchxwith|Pparam_val(a,b,c)->leta=self#arg_labelainletb=self#optionself#expressionbinletc=self#patterncinPparam_val(a,b,c)|Pparam_newtypea->leta=self#locself#stringainPparam_newtypeamethodfunction_param:function_param->function_param=fun{pparam_loc;pparam_desc}->letpparam_loc=self#locationpparam_locinletpparam_desc=self#function_param_descpparam_descin{pparam_loc;pparam_desc}methodfunction_body:function_body->function_body=funx->matchxwith|Pfunction_bodya->leta=self#expressionainPfunction_bodya|Pfunction_cases(a,b,c)->leta=self#casesainletb=self#locationbinletc=self#attributescinPfunction_cases(a,b,c)methodtype_constraint:type_constraint->type_constraint=funx->matchxwith|Pconstrainta->leta=self#core_typeainPconstrainta|Pcoerce(a,b)->leta=self#optionself#core_typeainletb=self#core_typebinPcoerce(a,b)methodvalue_description:value_description->value_description=fun{pval_name;pval_type;pval_prim;pval_attributes;pval_loc}->letpval_name=self#locself#stringpval_nameinletpval_type=self#core_typepval_typeinletpval_prim=self#listself#stringpval_priminletpval_attributes=self#attributespval_attributesinletpval_loc=self#locationpval_locin{pval_name;pval_type;pval_prim;pval_attributes;pval_loc}methodtype_declaration:type_declaration->type_declaration=fun{ptype_name;ptype_params;ptype_cstrs;ptype_kind;ptype_private;ptype_manifest;ptype_attributes;ptype_loc;}->letptype_name=self#locself#stringptype_nameinletptype_params=self#list(fun(a,b)->leta=self#core_typeainletb=(fun(a,b)->leta=self#varianceainletb=self#injectivitybin(a,b))bin(a,b))ptype_paramsinletptype_cstrs=self#list(fun(a,b,c)->leta=self#core_typeainletb=self#core_typebinletc=self#locationcin(a,b,c))ptype_cstrsinletptype_kind=self#type_kindptype_kindinletptype_private=self#private_flagptype_privateinletptype_manifest=self#optionself#core_typeptype_manifestinletptype_attributes=self#attributesptype_attributesinletptype_loc=self#locationptype_locin{ptype_name;ptype_params;ptype_cstrs;ptype_kind;ptype_private;ptype_manifest;ptype_attributes;ptype_loc;}methodtype_kind:type_kind->type_kind=funx->matchxwith|Ptype_abstract->Ptype_abstract|Ptype_varianta->leta=self#listself#constructor_declarationainPtype_varianta|Ptype_recorda->leta=self#listself#label_declarationainPtype_recorda|Ptype_open->Ptype_openmethodlabel_declaration:label_declaration->label_declaration=fun{pld_name;pld_mutable;pld_type;pld_loc;pld_attributes}->letpld_name=self#locself#stringpld_nameinletpld_mutable=self#mutable_flagpld_mutableinletpld_type=self#core_typepld_typeinletpld_loc=self#locationpld_locinletpld_attributes=self#attributespld_attributesin{pld_name;pld_mutable;pld_type;pld_loc;pld_attributes}methodconstructor_declaration:constructor_declaration->constructor_declaration=fun{pcd_name;pcd_vars;pcd_args;pcd_res;pcd_loc;pcd_attributes}->letpcd_name=self#locself#stringpcd_nameinletpcd_vars=self#list(self#locself#string)pcd_varsinletpcd_args=self#constructor_argumentspcd_argsinletpcd_res=self#optionself#core_typepcd_resinletpcd_loc=self#locationpcd_locinletpcd_attributes=self#attributespcd_attributesin{pcd_name;pcd_vars;pcd_args;pcd_res;pcd_loc;pcd_attributes}methodconstructor_arguments:constructor_arguments->constructor_arguments=funx->matchxwith|Pcstr_tuplea->leta=self#listself#core_typeainPcstr_tuplea|Pcstr_recorda->leta=self#listself#label_declarationainPcstr_recordamethodtype_extension:type_extension->type_extension=fun{ptyext_path;ptyext_params;ptyext_constructors;ptyext_private;ptyext_loc;ptyext_attributes;}->letptyext_path=self#longident_locptyext_pathinletptyext_params=self#list(fun(a,b)->leta=self#core_typeainletb=(fun(a,b)->leta=self#varianceainletb=self#injectivitybin(a,b))bin(a,b))ptyext_paramsinletptyext_constructors=self#listself#extension_constructorptyext_constructorsinletptyext_private=self#private_flagptyext_privateinletptyext_loc=self#locationptyext_locinletptyext_attributes=self#attributesptyext_attributesin{ptyext_path;ptyext_params;ptyext_constructors;ptyext_private;ptyext_loc;ptyext_attributes;}methodextension_constructor:extension_constructor->extension_constructor=fun{pext_name;pext_kind;pext_loc;pext_attributes}->letpext_name=self#locself#stringpext_nameinletpext_kind=self#extension_constructor_kindpext_kindinletpext_loc=self#locationpext_locinletpext_attributes=self#attributespext_attributesin{pext_name;pext_kind;pext_loc;pext_attributes}methodtype_exception:type_exception->type_exception=fun{ptyexn_constructor;ptyexn_loc;ptyexn_attributes}->letptyexn_constructor=self#extension_constructorptyexn_constructorinletptyexn_loc=self#locationptyexn_locinletptyexn_attributes=self#attributesptyexn_attributesin{ptyexn_constructor;ptyexn_loc;ptyexn_attributes}methodextension_constructor_kind:extension_constructor_kind->extension_constructor_kind=funx->matchxwith|Pext_decl(a,b,c)->leta=self#list(self#locself#string)ainletb=self#constructor_argumentsbinletc=self#optionself#core_typecinPext_decl(a,b,c)|Pext_rebinda->leta=self#longident_locainPext_rebindamethodclass_type:class_type->class_type=fun{pcty_desc;pcty_loc;pcty_attributes}->letpcty_desc=self#class_type_descpcty_descinletpcty_loc=self#locationpcty_locinletpcty_attributes=self#attributespcty_attributesin{pcty_desc;pcty_loc;pcty_attributes}methodclass_type_desc:class_type_desc->class_type_desc=funx->matchxwith|Pcty_constr(a,b)->leta=self#longident_locainletb=self#listself#core_typebinPcty_constr(a,b)|Pcty_signaturea->leta=self#class_signatureainPcty_signaturea|Pcty_arrow(a,b,c)->leta=self#arg_labelainletb=self#core_typebinletc=self#class_typecinPcty_arrow(a,b,c)|Pcty_extensiona->leta=self#extensionainPcty_extensiona|Pcty_open(a,b)->leta=self#open_descriptionainletb=self#class_typebinPcty_open(a,b)methodclass_signature:class_signature->class_signature=fun{pcsig_self;pcsig_fields}->letpcsig_self=self#core_typepcsig_selfinletpcsig_fields=self#listself#class_type_fieldpcsig_fieldsin{pcsig_self;pcsig_fields}methodclass_type_field:class_type_field->class_type_field=fun{pctf_desc;pctf_loc;pctf_attributes}->letpctf_desc=self#class_type_field_descpctf_descinletpctf_loc=self#locationpctf_locinletpctf_attributes=self#attributespctf_attributesin{pctf_desc;pctf_loc;pctf_attributes}methodclass_type_field_desc:class_type_field_desc->class_type_field_desc=funx->matchxwith|Pctf_inherita->leta=self#class_typeainPctf_inherita|Pctf_vala->leta=(fun(a,b,c,d)->leta=self#locself#labelainletb=self#mutable_flagbinletc=self#virtual_flagcinletd=self#core_typedin(a,b,c,d))ainPctf_vala|Pctf_methoda->leta=(fun(a,b,c,d)->leta=self#locself#labelainletb=self#private_flagbinletc=self#virtual_flagcinletd=self#core_typedin(a,b,c,d))ainPctf_methoda|Pctf_constrainta->leta=(fun(a,b)->leta=self#core_typeainletb=self#core_typebin(a,b))ainPctf_constrainta|Pctf_attributea->leta=self#attributeainPctf_attributea|Pctf_extensiona->leta=self#extensionainPctf_extensionamethodclass_infos:'a.('a->'a)->'aclass_infos->'aclass_infos=fun_a{pci_virt;pci_params;pci_name;pci_expr;pci_loc;pci_attributes}->letpci_virt=self#virtual_flagpci_virtinletpci_params=self#list(fun(a,b)->leta=self#core_typeainletb=(fun(a,b)->leta=self#varianceainletb=self#injectivitybin(a,b))bin(a,b))pci_paramsinletpci_name=self#locself#stringpci_nameinletpci_expr=_apci_exprinletpci_loc=self#locationpci_locinletpci_attributes=self#attributespci_attributesin{pci_virt;pci_params;pci_name;pci_expr;pci_loc;pci_attributes}methodclass_description:class_description->class_description=self#class_infosself#class_typemethodclass_type_declaration:class_type_declaration->class_type_declaration=self#class_infosself#class_typemethodclass_expr:class_expr->class_expr=fun{pcl_desc;pcl_loc;pcl_attributes}->letpcl_desc=self#class_expr_descpcl_descinletpcl_loc=self#locationpcl_locinletpcl_attributes=self#attributespcl_attributesin{pcl_desc;pcl_loc;pcl_attributes}methodclass_expr_desc:class_expr_desc->class_expr_desc=funx->matchxwith|Pcl_constr(a,b)->leta=self#longident_locainletb=self#listself#core_typebinPcl_constr(a,b)|Pcl_structurea->leta=self#class_structureainPcl_structurea|Pcl_fun(a,b,c,d)->leta=self#arg_labelainletb=self#optionself#expressionbinletc=self#patterncinletd=self#class_exprdinPcl_fun(a,b,c,d)|Pcl_apply(a,b)->leta=self#class_exprainletb=self#list(fun(a,b)->leta=self#arg_labelainletb=self#expressionbin(a,b))binPcl_apply(a,b)|Pcl_let(a,b,c)->leta=self#rec_flagainletb=self#listself#value_bindingbinletc=self#class_exprcinPcl_let(a,b,c)|Pcl_constraint(a,b)->leta=self#class_exprainletb=self#class_typebinPcl_constraint(a,b)|Pcl_extensiona->leta=self#extensionainPcl_extensiona|Pcl_open(a,b)->leta=self#open_descriptionainletb=self#class_exprbinPcl_open(a,b)methodclass_structure:class_structure->class_structure=fun{pcstr_self;pcstr_fields}->letpcstr_self=self#patternpcstr_selfinletpcstr_fields=self#listself#class_fieldpcstr_fieldsin{pcstr_self;pcstr_fields}methodclass_field:class_field->class_field=fun{pcf_desc;pcf_loc;pcf_attributes}->letpcf_desc=self#class_field_descpcf_descinletpcf_loc=self#locationpcf_locinletpcf_attributes=self#attributespcf_attributesin{pcf_desc;pcf_loc;pcf_attributes}methodclass_field_desc:class_field_desc->class_field_desc=funx->matchxwith|Pcf_inherit(a,b,c)->leta=self#override_flagainletb=self#class_exprbinletc=self#option(self#locself#string)cinPcf_inherit(a,b,c)|Pcf_vala->leta=(fun(a,b,c)->leta=self#locself#labelainletb=self#mutable_flagbinletc=self#class_field_kindcin(a,b,c))ainPcf_vala|Pcf_methoda->leta=(fun(a,b,c)->leta=self#locself#labelainletb=self#private_flagbinletc=self#class_field_kindcin(a,b,c))ainPcf_methoda|Pcf_constrainta->leta=(fun(a,b)->leta=self#core_typeainletb=self#core_typebin(a,b))ainPcf_constrainta|Pcf_initializera->leta=self#expressionainPcf_initializera|Pcf_attributea->leta=self#attributeainPcf_attributea|Pcf_extensiona->leta=self#extensionainPcf_extensionamethodclass_field_kind:class_field_kind->class_field_kind=funx->matchxwith|Cfk_virtuala->leta=self#core_typeainCfk_virtuala|Cfk_concrete(a,b)->leta=self#override_flagainletb=self#expressionbinCfk_concrete(a,b)methodclass_declaration:class_declaration->class_declaration=self#class_infosself#class_exprmethodmodule_type:module_type->module_type=fun{pmty_desc;pmty_loc;pmty_attributes}->letpmty_desc=self#module_type_descpmty_descinletpmty_loc=self#locationpmty_locinletpmty_attributes=self#attributespmty_attributesin{pmty_desc;pmty_loc;pmty_attributes}methodmodule_type_desc:module_type_desc->module_type_desc=funx->matchxwith|Pmty_identa->leta=self#longident_locainPmty_identa|Pmty_signaturea->leta=self#signatureainPmty_signaturea|Pmty_functor(a,b)->leta=self#functor_parameterainletb=self#module_typebinPmty_functor(a,b)|Pmty_with(a,b)->leta=self#module_typeainletb=self#listself#with_constraintbinPmty_with(a,b)|Pmty_typeofa->leta=self#module_exprainPmty_typeofa|Pmty_extensiona->leta=self#extensionainPmty_extensiona|Pmty_aliasa->leta=self#longident_locainPmty_aliasamethodfunctor_parameter:functor_parameter->functor_parameter=funx->matchxwith|Unit->Unit|Named(a,b)->leta=self#loc(self#optionself#string)ainletb=self#module_typebinNamed(a,b)methodsignature:signature->signature=self#listself#signature_itemmethodsignature_item:signature_item->signature_item=fun{psig_desc;psig_loc}->letpsig_desc=self#signature_item_descpsig_descinletpsig_loc=self#locationpsig_locin{psig_desc;psig_loc}methodsignature_item_desc:signature_item_desc->signature_item_desc=funx->matchxwith|Psig_valuea->leta=self#value_descriptionainPsig_valuea|Psig_type(a,b)->leta=self#rec_flagainletb=self#listself#type_declarationbinPsig_type(a,b)|Psig_typesubsta->leta=self#listself#type_declarationainPsig_typesubsta|Psig_typexta->leta=self#type_extensionainPsig_typexta|Psig_exceptiona->leta=self#type_exceptionainPsig_exceptiona|Psig_modulea->leta=self#module_declarationainPsig_modulea|Psig_modsubsta->leta=self#module_substitutionainPsig_modsubsta|Psig_recmodulea->leta=self#listself#module_declarationainPsig_recmodulea|Psig_modtypea->leta=self#module_type_declarationainPsig_modtypea|Psig_modtypesubsta->leta=self#module_type_declarationainPsig_modtypesubsta|Psig_opena->leta=self#open_descriptionainPsig_opena|Psig_includea->leta=self#include_descriptionainPsig_includea|Psig_classa->leta=self#listself#class_descriptionainPsig_classa|Psig_class_typea->leta=self#listself#class_type_declarationainPsig_class_typea|Psig_attributea->leta=self#attributeainPsig_attributea|Psig_extension(a,b)->leta=self#extensionainletb=self#attributesbinPsig_extension(a,b)methodmodule_declaration:module_declaration->module_declaration=fun{pmd_name;pmd_type;pmd_attributes;pmd_loc}->letpmd_name=self#loc(self#optionself#string)pmd_nameinletpmd_type=self#module_typepmd_typeinletpmd_attributes=self#attributespmd_attributesinletpmd_loc=self#locationpmd_locin{pmd_name;pmd_type;pmd_attributes;pmd_loc}methodmodule_substitution:module_substitution->module_substitution=fun{pms_name;pms_manifest;pms_attributes;pms_loc}->letpms_name=self#locself#stringpms_nameinletpms_manifest=self#longident_locpms_manifestinletpms_attributes=self#attributespms_attributesinletpms_loc=self#locationpms_locin{pms_name;pms_manifest;pms_attributes;pms_loc}methodmodule_type_declaration:module_type_declaration->module_type_declaration=fun{pmtd_name;pmtd_type;pmtd_attributes;pmtd_loc}->letpmtd_name=self#locself#stringpmtd_nameinletpmtd_type=self#optionself#module_typepmtd_typeinletpmtd_attributes=self#attributespmtd_attributesinletpmtd_loc=self#locationpmtd_locin{pmtd_name;pmtd_type;pmtd_attributes;pmtd_loc}methodopen_infos:'a.('a->'a)->'aopen_infos->'aopen_infos=fun_a{popen_expr;popen_override;popen_loc;popen_attributes}->letpopen_expr=_apopen_exprinletpopen_override=self#override_flagpopen_overrideinletpopen_loc=self#locationpopen_locinletpopen_attributes=self#attributespopen_attributesin{popen_expr;popen_override;popen_loc;popen_attributes}methodopen_description:open_description->open_description=self#open_infosself#longident_locmethodopen_declaration:open_declaration->open_declaration=self#open_infosself#module_exprmethodinclude_infos:'a.('a->'a)->'ainclude_infos->'ainclude_infos=fun_a{pincl_mod;pincl_loc;pincl_attributes}->letpincl_mod=_apincl_modinletpincl_loc=self#locationpincl_locinletpincl_attributes=self#attributespincl_attributesin{pincl_mod;pincl_loc;pincl_attributes}methodinclude_description:include_description->include_description=self#include_infosself#module_typemethodinclude_declaration:include_declaration->include_declaration=self#include_infosself#module_exprmethodwith_constraint:with_constraint->with_constraint=funx->matchxwith|Pwith_type(a,b)->leta=self#longident_locainletb=self#type_declarationbinPwith_type(a,b)|Pwith_module(a,b)->leta=self#longident_locainletb=self#longident_locbinPwith_module(a,b)|Pwith_modtype(a,b)->leta=self#longident_locainletb=self#module_typebinPwith_modtype(a,b)|Pwith_modtypesubst(a,b)->leta=self#longident_locainletb=self#module_typebinPwith_modtypesubst(a,b)|Pwith_typesubst(a,b)->leta=self#longident_locainletb=self#type_declarationbinPwith_typesubst(a,b)|Pwith_modsubst(a,b)->leta=self#longident_locainletb=self#longident_locbinPwith_modsubst(a,b)methodmodule_expr:module_expr->module_expr=fun{pmod_desc;pmod_loc;pmod_attributes}->letpmod_desc=self#module_expr_descpmod_descinletpmod_loc=self#locationpmod_locinletpmod_attributes=self#attributespmod_attributesin{pmod_desc;pmod_loc;pmod_attributes}methodmodule_expr_desc:module_expr_desc->module_expr_desc=funx->matchxwith|Pmod_identa->leta=self#longident_locainPmod_identa|Pmod_structurea->leta=self#structureainPmod_structurea|Pmod_functor(a,b)->leta=self#functor_parameterainletb=self#module_exprbinPmod_functor(a,b)|Pmod_apply(a,b)->leta=self#module_exprainletb=self#module_exprbinPmod_apply(a,b)|Pmod_apply_unita->leta=self#module_exprainPmod_apply_unita|Pmod_constraint(a,b)->leta=self#module_exprainletb=self#module_typebinPmod_constraint(a,b)|Pmod_unpacka->leta=self#expressionainPmod_unpacka|Pmod_extensiona->leta=self#extensionainPmod_extensionamethodstructure:structure->structure=self#listself#structure_itemmethodstructure_item:structure_item->structure_item=fun{pstr_desc;pstr_loc}->letpstr_desc=self#structure_item_descpstr_descinletpstr_loc=self#locationpstr_locin{pstr_desc;pstr_loc}methodstructure_item_desc:structure_item_desc->structure_item_desc=funx->matchxwith|Pstr_eval(a,b)->leta=self#expressionainletb=self#attributesbinPstr_eval(a,b)|Pstr_value(a,b)->leta=self#rec_flagainletb=self#listself#value_bindingbinPstr_value(a,b)|Pstr_primitivea->leta=self#value_descriptionainPstr_primitivea|Pstr_type(a,b)->leta=self#rec_flagainletb=self#listself#type_declarationbinPstr_type(a,b)|Pstr_typexta->leta=self#type_extensionainPstr_typexta|Pstr_exceptiona->leta=self#type_exceptionainPstr_exceptiona|Pstr_modulea->leta=self#module_bindingainPstr_modulea|Pstr_recmodulea->leta=self#listself#module_bindingainPstr_recmodulea|Pstr_modtypea->leta=self#module_type_declarationainPstr_modtypea|Pstr_opena->leta=self#open_declarationainPstr_opena|Pstr_classa->leta=self#listself#class_declarationainPstr_classa|Pstr_class_typea->leta=self#listself#class_type_declarationainPstr_class_typea|Pstr_includea->leta=self#include_declarationainPstr_includea|Pstr_attributea->leta=self#attributeainPstr_attributea|Pstr_extension(a,b)->leta=self#extensionainletb=self#attributesbinPstr_extension(a,b)methodvalue_constraint:value_constraint->value_constraint=funx->matchxwith|Pvc_constraint{locally_abstract_univars;typ}->letlocally_abstract_univars=self#list(self#locself#string)locally_abstract_univarsinlettyp=self#core_typetypinPvc_constraint{locally_abstract_univars;typ}|Pvc_coercion{ground;coercion}->letground=self#optionself#core_typegroundinletcoercion=self#core_typecoercioninPvc_coercion{ground;coercion}methodvalue_binding:value_binding->value_binding=fun{pvb_pat;pvb_expr;pvb_constraint;pvb_attributes;pvb_loc}->letpvb_pat=self#patternpvb_patinletpvb_expr=self#expressionpvb_exprinletpvb_constraint=self#optionself#value_constraintpvb_constraintinletpvb_attributes=self#attributespvb_attributesinletpvb_loc=self#locationpvb_locin{pvb_pat;pvb_expr;pvb_constraint;pvb_attributes;pvb_loc}methodmodule_binding:module_binding->module_binding=fun{pmb_name;pmb_expr;pmb_attributes;pmb_loc}->letpmb_name=self#loc(self#optionself#string)pmb_nameinletpmb_expr=self#module_exprpmb_exprinletpmb_attributes=self#attributespmb_attributesinletpmb_loc=self#locationpmb_locin{pmb_name;pmb_expr;pmb_attributes;pmb_loc}methodtoplevel_phrase:toplevel_phrase->toplevel_phrase=funx->matchxwith|Ptop_defa->leta=self#structureainPtop_defa|Ptop_dira->leta=self#toplevel_directiveainPtop_diramethodtoplevel_directive:toplevel_directive->toplevel_directive=fun{pdir_name;pdir_arg;pdir_loc}->letpdir_name=self#locself#stringpdir_nameinletpdir_arg=self#optionself#directive_argumentpdir_arginletpdir_loc=self#locationpdir_locin{pdir_name;pdir_arg;pdir_loc}methoddirective_argument:directive_argument->directive_argument=fun{pdira_desc;pdira_loc}->letpdira_desc=self#directive_argument_descpdira_descinletpdira_loc=self#locationpdira_locin{pdira_desc;pdira_loc}methoddirective_argument_desc:directive_argument_desc->directive_argument_desc=funx->matchxwith|Pdir_stringa->leta=self#stringainPdir_stringa|Pdir_int(a,b)->leta=self#stringainletb=self#optionself#charbinPdir_int(a,b)|Pdir_identa->leta=self#longidentainPdir_identa|Pdir_boola->leta=self#boolainPdir_boolamethodcases:cases->cases=self#listself#caseendclassvirtualiter=object(self)methodvirtualbool:bool->unitmethodvirtualchar:char->unitmethodvirtualint:int->unitmethodvirtuallist:'a.('a->unit)->'alist->unitmethodvirtualoption:'a.('a->unit)->'aoption->unitmethodvirtualstring:string->unitmethodposition:position->unit=fun{pos_fname;pos_lnum;pos_bol;pos_cnum}->self#stringpos_fname;self#intpos_lnum;self#intpos_bol;self#intpos_cnummethodlocation:location->unit=fun{loc_start;loc_end;loc_ghost}->self#positionloc_start;self#positionloc_end;self#boolloc_ghostmethodlocation_stack:location_stack->unit=self#listself#locationmethodloc:'a.('a->unit)->'aloc->unit=fun_a{txt;loc}->_atxt;self#locationlocmethodlongident:longident->unit=funx->matchxwith|Lidenta->self#stringa|Ldot(a,b)->self#longidenta;self#stringb|Lapply(a,b)->self#longidenta;self#longidentbmethodlongident_loc:longident_loc->unit=self#locself#longidentmethodrec_flag:rec_flag->unit=fun_->()methoddirection_flag:direction_flag->unit=fun_->()methodprivate_flag:private_flag->unit=fun_->()methodmutable_flag:mutable_flag->unit=fun_->()methodvirtual_flag:virtual_flag->unit=fun_->()methodoverride_flag:override_flag->unit=fun_->()methodclosed_flag:closed_flag->unit=fun_->()methodlabel:label->unit=self#stringmethodarg_label:arg_label->unit=funx->matchxwith|Nolabel->()|Labelleda->self#stringa|Optionala->self#stringamethodvariance:variance->unit=fun_->()methodinjectivity:injectivity->unit=fun_->()methodconstant:constant->unit=funx->matchxwith|Pconst_integer(a,b)->self#stringa;self#optionself#charb|Pconst_chara->self#chara|Pconst_string(a,b,c)->self#stringa;self#locationb;self#optionself#stringc|Pconst_float(a,b)->self#stringa;self#optionself#charbmethodattribute:attribute->unit=fun{attr_name;attr_payload;attr_loc}->self#locself#stringattr_name;self#payloadattr_payload;self#locationattr_locmethodextension:extension->unit=fun(a,b)->self#locself#stringa;self#payloadbmethodattributes:attributes->unit=self#listself#attributemethodpayload:payload->unit=funx->matchxwith|PStra->self#structurea|PSiga->self#signaturea|PTypa->self#core_typea|PPat(a,b)->self#patterna;self#optionself#expressionbmethodcore_type:core_type->unit=fun{ptyp_desc;ptyp_loc;ptyp_loc_stack;ptyp_attributes}->self#core_type_descptyp_desc;self#locationptyp_loc;self#location_stackptyp_loc_stack;self#attributesptyp_attributesmethodcore_type_desc:core_type_desc->unit=funx->matchxwith|Ptyp_any->()|Ptyp_vara->self#stringa|Ptyp_arrow(a,b,c)->self#arg_labela;self#core_typeb;self#core_typec|Ptyp_tuplea->self#listself#core_typea|Ptyp_constr(a,b)->self#longident_loca;self#listself#core_typeb|Ptyp_object(a,b)->self#listself#object_fielda;self#closed_flagb|Ptyp_class(a,b)->self#longident_loca;self#listself#core_typeb|Ptyp_alias(a,b)->self#core_typea;self#locself#stringb|Ptyp_variant(a,b,c)->self#listself#row_fielda;self#closed_flagb;self#option(self#listself#label)c|Ptyp_poly(a,b)->self#list(self#locself#string)a;self#core_typeb|Ptyp_packagea->self#package_typea|Ptyp_open(a,b)->self#longident_loca;self#core_typeb|Ptyp_extensiona->self#extensionamethodpackage_type:package_type->unit=fun(a,b)->self#longident_loca;self#list(fun(a,b)->self#longident_loca;self#core_typeb)bmethodrow_field:row_field->unit=fun{prf_desc;prf_loc;prf_attributes}->self#row_field_descprf_desc;self#locationprf_loc;self#attributesprf_attributesmethodrow_field_desc:row_field_desc->unit=funx->matchxwith|Rtag(a,b,c)->self#locself#labela;self#boolb;self#listself#core_typec|Rinherita->self#core_typeamethodobject_field:object_field->unit=fun{pof_desc;pof_loc;pof_attributes}->self#object_field_descpof_desc;self#locationpof_loc;self#attributespof_attributesmethodobject_field_desc:object_field_desc->unit=funx->matchxwith|Otag(a,b)->self#locself#labela;self#core_typeb|Oinherita->self#core_typeamethodpattern:pattern->unit=fun{ppat_desc;ppat_loc;ppat_loc_stack;ppat_attributes}->self#pattern_descppat_desc;self#locationppat_loc;self#location_stackppat_loc_stack;self#attributesppat_attributesmethodpattern_desc:pattern_desc->unit=funx->matchxwith|Ppat_any->()|Ppat_vara->self#locself#stringa|Ppat_alias(a,b)->self#patterna;self#locself#stringb|Ppat_constanta->self#constanta|Ppat_interval(a,b)->self#constanta;self#constantb|Ppat_tuplea->self#listself#patterna|Ppat_construct(a,b)->self#longident_loca;self#option(fun(a,b)->self#list(self#locself#string)a;self#patternb)b|Ppat_variant(a,b)->self#labela;self#optionself#patternb|Ppat_record(a,b)->self#list(fun(a,b)->self#longident_loca;self#patternb)a;self#closed_flagb|Ppat_arraya->self#listself#patterna|Ppat_or(a,b)->self#patterna;self#patternb|Ppat_constraint(a,b)->self#patterna;self#core_typeb|Ppat_typea->self#longident_loca|Ppat_lazya->self#patterna|Ppat_unpacka->self#loc(self#optionself#string)a|Ppat_exceptiona->self#patterna|Ppat_extensiona->self#extensiona|Ppat_open(a,b)->self#longident_loca;self#patternbmethodexpression:expression->unit=fun{pexp_desc;pexp_loc;pexp_loc_stack;pexp_attributes}->self#expression_descpexp_desc;self#locationpexp_loc;self#location_stackpexp_loc_stack;self#attributespexp_attributesmethodexpression_desc:expression_desc->unit=funx->matchxwith|Pexp_identa->self#longident_loca|Pexp_constanta->self#constanta|Pexp_let(a,b,c)->self#rec_flaga;self#listself#value_bindingb;self#expressionc|Pexp_function(a,b,c)->self#listself#function_parama;self#optionself#type_constraintb;self#function_bodyc|Pexp_apply(a,b)->self#expressiona;self#list(fun(a,b)->self#arg_labela;self#expressionb)b|Pexp_match(a,b)->self#expressiona;self#casesb|Pexp_try(a,b)->self#expressiona;self#casesb|Pexp_tuplea->self#listself#expressiona|Pexp_construct(a,b)->self#longident_loca;self#optionself#expressionb|Pexp_variant(a,b)->self#labela;self#optionself#expressionb|Pexp_record(a,b)->self#list(fun(a,b)->self#longident_loca;self#expressionb)a;self#optionself#expressionb|Pexp_field(a,b)->self#expressiona;self#longident_locb|Pexp_setfield(a,b,c)->self#expressiona;self#longident_locb;self#expressionc|Pexp_arraya->self#listself#expressiona|Pexp_ifthenelse(a,b,c)->self#expressiona;self#expressionb;self#optionself#expressionc|Pexp_sequence(a,b)->self#expressiona;self#expressionb|Pexp_while(a,b)->self#expressiona;self#expressionb|Pexp_for(a,b,c,d,e)->self#patterna;self#expressionb;self#expressionc;self#direction_flagd;self#expressione|Pexp_constraint(a,b)->self#expressiona;self#core_typeb|Pexp_coerce(a,b,c)->self#expressiona;self#optionself#core_typeb;self#core_typec|Pexp_send(a,b)->self#expressiona;self#locself#labelb|Pexp_newa->self#longident_loca|Pexp_setinstvar(a,b)->self#locself#labela;self#expressionb|Pexp_overridea->self#list(fun(a,b)->self#locself#labela;self#expressionb)a|Pexp_letmodule(a,b,c)->self#loc(self#optionself#string)a;self#module_exprb;self#expressionc|Pexp_letexception(a,b)->self#extension_constructora;self#expressionb|Pexp_asserta->self#expressiona|Pexp_lazya->self#expressiona|Pexp_poly(a,b)->self#expressiona;self#optionself#core_typeb|Pexp_objecta->self#class_structurea|Pexp_newtype(a,b)->self#locself#stringa;self#expressionb|Pexp_packa->self#module_expra|Pexp_open(a,b)->self#open_declarationa;self#expressionb|Pexp_letopa->self#letopa|Pexp_extensiona->self#extensiona|Pexp_unreachable->()methodcase:case->unit=fun{pc_lhs;pc_guard;pc_rhs}->self#patternpc_lhs;self#optionself#expressionpc_guard;self#expressionpc_rhsmethodletop:letop->unit=fun{let_;ands;body}->self#binding_oplet_;self#listself#binding_opands;self#expressionbodymethodbinding_op:binding_op->unit=fun{pbop_op;pbop_pat;pbop_exp;pbop_loc}->self#locself#stringpbop_op;self#patternpbop_pat;self#expressionpbop_exp;self#locationpbop_locmethodfunction_param_desc:function_param_desc->unit=funx->matchxwith|Pparam_val(a,b,c)->self#arg_labela;self#optionself#expressionb;self#patternc|Pparam_newtypea->self#locself#stringamethodfunction_param:function_param->unit=fun{pparam_loc;pparam_desc}->self#locationpparam_loc;self#function_param_descpparam_descmethodfunction_body:function_body->unit=funx->matchxwith|Pfunction_bodya->self#expressiona|Pfunction_cases(a,b,c)->self#casesa;self#locationb;self#attributescmethodtype_constraint:type_constraint->unit=funx->matchxwith|Pconstrainta->self#core_typea|Pcoerce(a,b)->self#optionself#core_typea;self#core_typebmethodvalue_description:value_description->unit=fun{pval_name;pval_type;pval_prim;pval_attributes;pval_loc}->self#locself#stringpval_name;self#core_typepval_type;self#listself#stringpval_prim;self#attributespval_attributes;self#locationpval_locmethodtype_declaration:type_declaration->unit=fun{ptype_name;ptype_params;ptype_cstrs;ptype_kind;ptype_private;ptype_manifest;ptype_attributes;ptype_loc;}->self#locself#stringptype_name;self#list(fun(a,b)->self#core_typea;(fun(a,b)->self#variancea;self#injectivityb)b)ptype_params;self#list(fun(a,b,c)->self#core_typea;self#core_typeb;self#locationc)ptype_cstrs;self#type_kindptype_kind;self#private_flagptype_private;self#optionself#core_typeptype_manifest;self#attributesptype_attributes;self#locationptype_locmethodtype_kind:type_kind->unit=funx->matchxwith|Ptype_abstract->()|Ptype_varianta->self#listself#constructor_declarationa|Ptype_recorda->self#listself#label_declarationa|Ptype_open->()methodlabel_declaration:label_declaration->unit=fun{pld_name;pld_mutable;pld_type;pld_loc;pld_attributes}->self#locself#stringpld_name;self#mutable_flagpld_mutable;self#core_typepld_type;self#locationpld_loc;self#attributespld_attributesmethodconstructor_declaration:constructor_declaration->unit=fun{pcd_name;pcd_vars;pcd_args;pcd_res;pcd_loc;pcd_attributes}->self#locself#stringpcd_name;self#list(self#locself#string)pcd_vars;self#constructor_argumentspcd_args;self#optionself#core_typepcd_res;self#locationpcd_loc;self#attributespcd_attributesmethodconstructor_arguments:constructor_arguments->unit=funx->matchxwith|Pcstr_tuplea->self#listself#core_typea|Pcstr_recorda->self#listself#label_declarationamethodtype_extension:type_extension->unit=fun{ptyext_path;ptyext_params;ptyext_constructors;ptyext_private;ptyext_loc;ptyext_attributes;}->self#longident_locptyext_path;self#list(fun(a,b)->self#core_typea;(fun(a,b)->self#variancea;self#injectivityb)b)ptyext_params;self#listself#extension_constructorptyext_constructors;self#private_flagptyext_private;self#locationptyext_loc;self#attributesptyext_attributesmethodextension_constructor:extension_constructor->unit=fun{pext_name;pext_kind;pext_loc;pext_attributes}->self#locself#stringpext_name;self#extension_constructor_kindpext_kind;self#locationpext_loc;self#attributespext_attributesmethodtype_exception:type_exception->unit=fun{ptyexn_constructor;ptyexn_loc;ptyexn_attributes}->self#extension_constructorptyexn_constructor;self#locationptyexn_loc;self#attributesptyexn_attributesmethodextension_constructor_kind:extension_constructor_kind->unit=funx->matchxwith|Pext_decl(a,b,c)->self#list(self#locself#string)a;self#constructor_argumentsb;self#optionself#core_typec|Pext_rebinda->self#longident_locamethodclass_type:class_type->unit=fun{pcty_desc;pcty_loc;pcty_attributes}->self#class_type_descpcty_desc;self#locationpcty_loc;self#attributespcty_attributesmethodclass_type_desc:class_type_desc->unit=funx->matchxwith|Pcty_constr(a,b)->self#longident_loca;self#listself#core_typeb|Pcty_signaturea->self#class_signaturea|Pcty_arrow(a,b,c)->self#arg_labela;self#core_typeb;self#class_typec|Pcty_extensiona->self#extensiona|Pcty_open(a,b)->self#open_descriptiona;self#class_typebmethodclass_signature:class_signature->unit=fun{pcsig_self;pcsig_fields}->self#core_typepcsig_self;self#listself#class_type_fieldpcsig_fieldsmethodclass_type_field:class_type_field->unit=fun{pctf_desc;pctf_loc;pctf_attributes}->self#class_type_field_descpctf_desc;self#locationpctf_loc;self#attributespctf_attributesmethodclass_type_field_desc:class_type_field_desc->unit=funx->matchxwith|Pctf_inherita->self#class_typea|Pctf_vala->(fun(a,b,c,d)->self#locself#labela;self#mutable_flagb;self#virtual_flagc;self#core_typed)a|Pctf_methoda->(fun(a,b,c,d)->self#locself#labela;self#private_flagb;self#virtual_flagc;self#core_typed)a|Pctf_constrainta->(fun(a,b)->self#core_typea;self#core_typeb)a|Pctf_attributea->self#attributea|Pctf_extensiona->self#extensionamethodclass_infos:'a.('a->unit)->'aclass_infos->unit=fun_a{pci_virt;pci_params;pci_name;pci_expr;pci_loc;pci_attributes}->self#virtual_flagpci_virt;self#list(fun(a,b)->self#core_typea;(fun(a,b)->self#variancea;self#injectivityb)b)pci_params;self#locself#stringpci_name;_apci_expr;self#locationpci_loc;self#attributespci_attributesmethodclass_description:class_description->unit=self#class_infosself#class_typemethodclass_type_declaration:class_type_declaration->unit=self#class_infosself#class_typemethodclass_expr:class_expr->unit=fun{pcl_desc;pcl_loc;pcl_attributes}->self#class_expr_descpcl_desc;self#locationpcl_loc;self#attributespcl_attributesmethodclass_expr_desc:class_expr_desc->unit=funx->matchxwith|Pcl_constr(a,b)->self#longident_loca;self#listself#core_typeb|Pcl_structurea->self#class_structurea|Pcl_fun(a,b,c,d)->self#arg_labela;self#optionself#expressionb;self#patternc;self#class_exprd|Pcl_apply(a,b)->self#class_expra;self#list(fun(a,b)->self#arg_labela;self#expressionb)b|Pcl_let(a,b,c)->self#rec_flaga;self#listself#value_bindingb;self#class_exprc|Pcl_constraint(a,b)->self#class_expra;self#class_typeb|Pcl_extensiona->self#extensiona|Pcl_open(a,b)->self#open_descriptiona;self#class_exprbmethodclass_structure:class_structure->unit=fun{pcstr_self;pcstr_fields}->self#patternpcstr_self;self#listself#class_fieldpcstr_fieldsmethodclass_field:class_field->unit=fun{pcf_desc;pcf_loc;pcf_attributes}->self#class_field_descpcf_desc;self#locationpcf_loc;self#attributespcf_attributesmethodclass_field_desc:class_field_desc->unit=funx->matchxwith|Pcf_inherit(a,b,c)->self#override_flaga;self#class_exprb;self#option(self#locself#string)c|Pcf_vala->(fun(a,b,c)->self#locself#labela;self#mutable_flagb;self#class_field_kindc)a|Pcf_methoda->(fun(a,b,c)->self#locself#labela;self#private_flagb;self#class_field_kindc)a|Pcf_constrainta->(fun(a,b)->self#core_typea;self#core_typeb)a|Pcf_initializera->self#expressiona|Pcf_attributea->self#attributea|Pcf_extensiona->self#extensionamethodclass_field_kind:class_field_kind->unit=funx->matchxwith|Cfk_virtuala->self#core_typea|Cfk_concrete(a,b)->self#override_flaga;self#expressionbmethodclass_declaration:class_declaration->unit=self#class_infosself#class_exprmethodmodule_type:module_type->unit=fun{pmty_desc;pmty_loc;pmty_attributes}->self#module_type_descpmty_desc;self#locationpmty_loc;self#attributespmty_attributesmethodmodule_type_desc:module_type_desc->unit=funx->matchxwith|Pmty_identa->self#longident_loca|Pmty_signaturea->self#signaturea|Pmty_functor(a,b)->self#functor_parametera;self#module_typeb|Pmty_with(a,b)->self#module_typea;self#listself#with_constraintb|Pmty_typeofa->self#module_expra|Pmty_extensiona->self#extensiona|Pmty_aliasa->self#longident_locamethodfunctor_parameter:functor_parameter->unit=funx->matchxwith|Unit->()|Named(a,b)->self#loc(self#optionself#string)a;self#module_typebmethodsignature:signature->unit=self#listself#signature_itemmethodsignature_item:signature_item->unit=fun{psig_desc;psig_loc}->self#signature_item_descpsig_desc;self#locationpsig_locmethodsignature_item_desc:signature_item_desc->unit=funx->matchxwith|Psig_valuea->self#value_descriptiona|Psig_type(a,b)->self#rec_flaga;self#listself#type_declarationb|Psig_typesubsta->self#listself#type_declarationa|Psig_typexta->self#type_extensiona|Psig_exceptiona->self#type_exceptiona|Psig_modulea->self#module_declarationa|Psig_modsubsta->self#module_substitutiona|Psig_recmodulea->self#listself#module_declarationa|Psig_modtypea->self#module_type_declarationa|Psig_modtypesubsta->self#module_type_declarationa|Psig_opena->self#open_descriptiona|Psig_includea->self#include_descriptiona|Psig_classa->self#listself#class_descriptiona|Psig_class_typea->self#listself#class_type_declarationa|Psig_attributea->self#attributea|Psig_extension(a,b)->self#extensiona;self#attributesbmethodmodule_declaration:module_declaration->unit=fun{pmd_name;pmd_type;pmd_attributes;pmd_loc}->self#loc(self#optionself#string)pmd_name;self#module_typepmd_type;self#attributespmd_attributes;self#locationpmd_locmethodmodule_substitution:module_substitution->unit=fun{pms_name;pms_manifest;pms_attributes;pms_loc}->self#locself#stringpms_name;self#longident_locpms_manifest;self#attributespms_attributes;self#locationpms_locmethodmodule_type_declaration:module_type_declaration->unit=fun{pmtd_name;pmtd_type;pmtd_attributes;pmtd_loc}->self#locself#stringpmtd_name;self#optionself#module_typepmtd_type;self#attributespmtd_attributes;self#locationpmtd_locmethodopen_infos:'a.('a->unit)->'aopen_infos->unit=fun_a{popen_expr;popen_override;popen_loc;popen_attributes}->_apopen_expr;self#override_flagpopen_override;self#locationpopen_loc;self#attributespopen_attributesmethodopen_description:open_description->unit=self#open_infosself#longident_locmethodopen_declaration:open_declaration->unit=self#open_infosself#module_exprmethodinclude_infos:'a.('a->unit)->'ainclude_infos->unit=fun_a{pincl_mod;pincl_loc;pincl_attributes}->_apincl_mod;self#locationpincl_loc;self#attributespincl_attributesmethodinclude_description:include_description->unit=self#include_infosself#module_typemethodinclude_declaration:include_declaration->unit=self#include_infosself#module_exprmethodwith_constraint:with_constraint->unit=funx->matchxwith|Pwith_type(a,b)->self#longident_loca;self#type_declarationb|Pwith_module(a,b)->self#longident_loca;self#longident_locb|Pwith_modtype(a,b)->self#longident_loca;self#module_typeb|Pwith_modtypesubst(a,b)->self#longident_loca;self#module_typeb|Pwith_typesubst(a,b)->self#longident_loca;self#type_declarationb|Pwith_modsubst(a,b)->self#longident_loca;self#longident_locbmethodmodule_expr:module_expr->unit=fun{pmod_desc;pmod_loc;pmod_attributes}->self#module_expr_descpmod_desc;self#locationpmod_loc;self#attributespmod_attributesmethodmodule_expr_desc:module_expr_desc->unit=funx->matchxwith|Pmod_identa->self#longident_loca|Pmod_structurea->self#structurea|Pmod_functor(a,b)->self#functor_parametera;self#module_exprb|Pmod_apply(a,b)->self#module_expra;self#module_exprb|Pmod_apply_unita->self#module_expra|Pmod_constraint(a,b)->self#module_expra;self#module_typeb|Pmod_unpacka->self#expressiona|Pmod_extensiona->self#extensionamethodstructure:structure->unit=self#listself#structure_itemmethodstructure_item:structure_item->unit=fun{pstr_desc;pstr_loc}->self#structure_item_descpstr_desc;self#locationpstr_locmethodstructure_item_desc:structure_item_desc->unit=funx->matchxwith|Pstr_eval(a,b)->self#expressiona;self#attributesb|Pstr_value(a,b)->self#rec_flaga;self#listself#value_bindingb|Pstr_primitivea->self#value_descriptiona|Pstr_type(a,b)->self#rec_flaga;self#listself#type_declarationb|Pstr_typexta->self#type_extensiona|Pstr_exceptiona->self#type_exceptiona|Pstr_modulea->self#module_bindinga|Pstr_recmodulea->self#listself#module_bindinga|Pstr_modtypea->self#module_type_declarationa|Pstr_opena->self#open_declarationa|Pstr_classa->self#listself#class_declarationa|Pstr_class_typea->self#listself#class_type_declarationa|Pstr_includea->self#include_declarationa|Pstr_attributea->self#attributea|Pstr_extension(a,b)->self#extensiona;self#attributesbmethodvalue_constraint:value_constraint->unit=funx->matchxwith|Pvc_constraint{locally_abstract_univars;typ}->self#list(self#locself#string)locally_abstract_univars;self#core_typetyp|Pvc_coercion{ground;coercion}->self#optionself#core_typeground;self#core_typecoercionmethodvalue_binding:value_binding->unit=fun{pvb_pat;pvb_expr;pvb_constraint;pvb_attributes;pvb_loc}->self#patternpvb_pat;self#expressionpvb_expr;self#optionself#value_constraintpvb_constraint;self#attributespvb_attributes;self#locationpvb_locmethodmodule_binding:module_binding->unit=fun{pmb_name;pmb_expr;pmb_attributes;pmb_loc}->self#loc(self#optionself#string)pmb_name;self#module_exprpmb_expr;self#attributespmb_attributes;self#locationpmb_locmethodtoplevel_phrase:toplevel_phrase->unit=funx->matchxwith|Ptop_defa->self#structurea|Ptop_dira->self#toplevel_directiveamethodtoplevel_directive:toplevel_directive->unit=fun{pdir_name;pdir_arg;pdir_loc}->self#locself#stringpdir_name;self#optionself#directive_argumentpdir_arg;self#locationpdir_locmethoddirective_argument:directive_argument->unit=fun{pdira_desc;pdira_loc}->self#directive_argument_descpdira_desc;self#locationpdira_locmethoddirective_argument_desc:directive_argument_desc->unit=funx->matchxwith|Pdir_stringa->self#stringa|Pdir_int(a,b)->self#stringa;self#optionself#charb|Pdir_identa->self#longidenta|Pdir_boola->self#boolamethodcases:cases->unit=self#listself#caseendclassvirtual['acc]fold=object(self)methodvirtualbool:bool->'acc->'accmethodvirtualchar:char->'acc->'accmethodvirtualint:int->'acc->'accmethodvirtuallist:'a.('a->'acc->'acc)->'alist->'acc->'accmethodvirtualoption:'a.('a->'acc->'acc)->'aoption->'acc->'accmethodvirtualstring:string->'acc->'accmethodposition:position->'acc->'acc=fun{pos_fname;pos_lnum;pos_bol;pos_cnum}acc->letacc=self#stringpos_fnameaccinletacc=self#intpos_lnumaccinletacc=self#intpos_bolaccinletacc=self#intpos_cnumaccinaccmethodlocation:location->'acc->'acc=fun{loc_start;loc_end;loc_ghost}acc->letacc=self#positionloc_startaccinletacc=self#positionloc_endaccinletacc=self#boolloc_ghostaccinaccmethodlocation_stack:location_stack->'acc->'acc=self#listself#locationmethodloc:'a.('a->'acc->'acc)->'aloc->'acc->'acc=fun_a{txt;loc}acc->letacc=_atxtaccinletacc=self#locationlocaccinaccmethodlongident:longident->'acc->'acc=funxacc->matchxwith|Lidenta->self#stringaacc|Ldot(a,b)->letacc=self#longidentaaccinletacc=self#stringbaccinacc|Lapply(a,b)->letacc=self#longidentaaccinletacc=self#longidentbaccinaccmethodlongident_loc:longident_loc->'acc->'acc=self#locself#longidentmethodrec_flag:rec_flag->'acc->'acc=fun_acc->accmethoddirection_flag:direction_flag->'acc->'acc=fun_acc->accmethodprivate_flag:private_flag->'acc->'acc=fun_acc->accmethodmutable_flag:mutable_flag->'acc->'acc=fun_acc->accmethodvirtual_flag:virtual_flag->'acc->'acc=fun_acc->accmethodoverride_flag:override_flag->'acc->'acc=fun_acc->accmethodclosed_flag:closed_flag->'acc->'acc=fun_acc->accmethodlabel:label->'acc->'acc=self#stringmethodarg_label:arg_label->'acc->'acc=funxacc->matchxwith|Nolabel->acc|Labelleda->self#stringaacc|Optionala->self#stringaaccmethodvariance:variance->'acc->'acc=fun_acc->accmethodinjectivity:injectivity->'acc->'acc=fun_acc->accmethodconstant:constant->'acc->'acc=funxacc->matchxwith|Pconst_integer(a,b)->letacc=self#stringaaccinletacc=self#optionself#charbaccinacc|Pconst_chara->self#charaacc|Pconst_string(a,b,c)->letacc=self#stringaaccinletacc=self#locationbaccinletacc=self#optionself#stringcaccinacc|Pconst_float(a,b)->letacc=self#stringaaccinletacc=self#optionself#charbaccinaccmethodattribute:attribute->'acc->'acc=fun{attr_name;attr_payload;attr_loc}acc->letacc=self#locself#stringattr_nameaccinletacc=self#payloadattr_payloadaccinletacc=self#locationattr_locaccinaccmethodextension:extension->'acc->'acc=fun(a,b)acc->letacc=self#locself#stringaaccinletacc=self#payloadbaccinaccmethodattributes:attributes->'acc->'acc=self#listself#attributemethodpayload:payload->'acc->'acc=funxacc->matchxwith|PStra->self#structureaacc|PSiga->self#signatureaacc|PTypa->self#core_typeaacc|PPat(a,b)->letacc=self#patternaaccinletacc=self#optionself#expressionbaccinaccmethodcore_type:core_type->'acc->'acc=fun{ptyp_desc;ptyp_loc;ptyp_loc_stack;ptyp_attributes}acc->letacc=self#core_type_descptyp_descaccinletacc=self#locationptyp_locaccinletacc=self#location_stackptyp_loc_stackaccinletacc=self#attributesptyp_attributesaccinaccmethodcore_type_desc:core_type_desc->'acc->'acc=funxacc->matchxwith|Ptyp_any->acc|Ptyp_vara->self#stringaacc|Ptyp_arrow(a,b,c)->letacc=self#arg_labelaaccinletacc=self#core_typebaccinletacc=self#core_typecaccinacc|Ptyp_tuplea->self#listself#core_typeaacc|Ptyp_constr(a,b)->letacc=self#longident_locaaccinletacc=self#listself#core_typebaccinacc|Ptyp_object(a,b)->letacc=self#listself#object_fieldaaccinletacc=self#closed_flagbaccinacc|Ptyp_class(a,b)->letacc=self#longident_locaaccinletacc=self#listself#core_typebaccinacc|Ptyp_alias(a,b)->letacc=self#core_typeaaccinletacc=self#locself#stringbaccinacc|Ptyp_variant(a,b,c)->letacc=self#listself#row_fieldaaccinletacc=self#closed_flagbaccinletacc=self#option(self#listself#label)caccinacc|Ptyp_poly(a,b)->letacc=self#list(self#locself#string)aaccinletacc=self#core_typebaccinacc|Ptyp_packagea->self#package_typeaacc|Ptyp_open(a,b)->letacc=self#longident_locaaccinletacc=self#core_typebaccinacc|Ptyp_extensiona->self#extensionaaccmethodpackage_type:package_type->'acc->'acc=fun(a,b)acc->letacc=self#longident_locaaccinletacc=self#list(fun(a,b)acc->letacc=self#longident_locaaccinletacc=self#core_typebaccinacc)baccinaccmethodrow_field:row_field->'acc->'acc=fun{prf_desc;prf_loc;prf_attributes}acc->letacc=self#row_field_descprf_descaccinletacc=self#locationprf_locaccinletacc=self#attributesprf_attributesaccinaccmethodrow_field_desc:row_field_desc->'acc->'acc=funxacc->matchxwith|Rtag(a,b,c)->letacc=self#locself#labelaaccinletacc=self#boolbaccinletacc=self#listself#core_typecaccinacc|Rinherita->self#core_typeaaccmethodobject_field:object_field->'acc->'acc=fun{pof_desc;pof_loc;pof_attributes}acc->letacc=self#object_field_descpof_descaccinletacc=self#locationpof_locaccinletacc=self#attributespof_attributesaccinaccmethodobject_field_desc:object_field_desc->'acc->'acc=funxacc->matchxwith|Otag(a,b)->letacc=self#locself#labelaaccinletacc=self#core_typebaccinacc|Oinherita->self#core_typeaaccmethodpattern:pattern->'acc->'acc=fun{ppat_desc;ppat_loc;ppat_loc_stack;ppat_attributes}acc->letacc=self#pattern_descppat_descaccinletacc=self#locationppat_locaccinletacc=self#location_stackppat_loc_stackaccinletacc=self#attributesppat_attributesaccinaccmethodpattern_desc:pattern_desc->'acc->'acc=funxacc->matchxwith|Ppat_any->acc|Ppat_vara->self#locself#stringaacc|Ppat_alias(a,b)->letacc=self#patternaaccinletacc=self#locself#stringbaccinacc|Ppat_constanta->self#constantaacc|Ppat_interval(a,b)->letacc=self#constantaaccinletacc=self#constantbaccinacc|Ppat_tuplea->self#listself#patternaacc|Ppat_construct(a,b)->letacc=self#longident_locaaccinletacc=self#option(fun(a,b)acc->letacc=self#list(self#locself#string)aaccinletacc=self#patternbaccinacc)baccinacc|Ppat_variant(a,b)->letacc=self#labelaaccinletacc=self#optionself#patternbaccinacc|Ppat_record(a,b)->letacc=self#list(fun(a,b)acc->letacc=self#longident_locaaccinletacc=self#patternbaccinacc)aaccinletacc=self#closed_flagbaccinacc|Ppat_arraya->self#listself#patternaacc|Ppat_or(a,b)->letacc=self#patternaaccinletacc=self#patternbaccinacc|Ppat_constraint(a,b)->letacc=self#patternaaccinletacc=self#core_typebaccinacc|Ppat_typea->self#longident_locaacc|Ppat_lazya->self#patternaacc|Ppat_unpacka->self#loc(self#optionself#string)aacc|Ppat_exceptiona->self#patternaacc|Ppat_extensiona->self#extensionaacc|Ppat_open(a,b)->letacc=self#longident_locaaccinletacc=self#patternbaccinaccmethodexpression:expression->'acc->'acc=fun{pexp_desc;pexp_loc;pexp_loc_stack;pexp_attributes}acc->letacc=self#expression_descpexp_descaccinletacc=self#locationpexp_locaccinletacc=self#location_stackpexp_loc_stackaccinletacc=self#attributespexp_attributesaccinaccmethodexpression_desc:expression_desc->'acc->'acc=funxacc->matchxwith|Pexp_identa->self#longident_locaacc|Pexp_constanta->self#constantaacc|Pexp_let(a,b,c)->letacc=self#rec_flagaaccinletacc=self#listself#value_bindingbaccinletacc=self#expressioncaccinacc|Pexp_function(a,b,c)->letacc=self#listself#function_paramaaccinletacc=self#optionself#type_constraintbaccinletacc=self#function_bodycaccinacc|Pexp_apply(a,b)->letacc=self#expressionaaccinletacc=self#list(fun(a,b)acc->letacc=self#arg_labelaaccinletacc=self#expressionbaccinacc)baccinacc|Pexp_match(a,b)->letacc=self#expressionaaccinletacc=self#casesbaccinacc|Pexp_try(a,b)->letacc=self#expressionaaccinletacc=self#casesbaccinacc|Pexp_tuplea->self#listself#expressionaacc|Pexp_construct(a,b)->letacc=self#longident_locaaccinletacc=self#optionself#expressionbaccinacc|Pexp_variant(a,b)->letacc=self#labelaaccinletacc=self#optionself#expressionbaccinacc|Pexp_record(a,b)->letacc=self#list(fun(a,b)acc->letacc=self#longident_locaaccinletacc=self#expressionbaccinacc)aaccinletacc=self#optionself#expressionbaccinacc|Pexp_field(a,b)->letacc=self#expressionaaccinletacc=self#longident_locbaccinacc|Pexp_setfield(a,b,c)->letacc=self#expressionaaccinletacc=self#longident_locbaccinletacc=self#expressioncaccinacc|Pexp_arraya->self#listself#expressionaacc|Pexp_ifthenelse(a,b,c)->letacc=self#expressionaaccinletacc=self#expressionbaccinletacc=self#optionself#expressioncaccinacc|Pexp_sequence(a,b)->letacc=self#expressionaaccinletacc=self#expressionbaccinacc|Pexp_while(a,b)->letacc=self#expressionaaccinletacc=self#expressionbaccinacc|Pexp_for(a,b,c,d,e)->letacc=self#patternaaccinletacc=self#expressionbaccinletacc=self#expressioncaccinletacc=self#direction_flagdaccinletacc=self#expressioneaccinacc|Pexp_constraint(a,b)->letacc=self#expressionaaccinletacc=self#core_typebaccinacc|Pexp_coerce(a,b,c)->letacc=self#expressionaaccinletacc=self#optionself#core_typebaccinletacc=self#core_typecaccinacc|Pexp_send(a,b)->letacc=self#expressionaaccinletacc=self#locself#labelbaccinacc|Pexp_newa->self#longident_locaacc|Pexp_setinstvar(a,b)->letacc=self#locself#labelaaccinletacc=self#expressionbaccinacc|Pexp_overridea->self#list(fun(a,b)acc->letacc=self#locself#labelaaccinletacc=self#expressionbaccinacc)aacc|Pexp_letmodule(a,b,c)->letacc=self#loc(self#optionself#string)aaccinletacc=self#module_exprbaccinletacc=self#expressioncaccinacc|Pexp_letexception(a,b)->letacc=self#extension_constructoraaccinletacc=self#expressionbaccinacc|Pexp_asserta->self#expressionaacc|Pexp_lazya->self#expressionaacc|Pexp_poly(a,b)->letacc=self#expressionaaccinletacc=self#optionself#core_typebaccinacc|Pexp_objecta->self#class_structureaacc|Pexp_newtype(a,b)->letacc=self#locself#stringaaccinletacc=self#expressionbaccinacc|Pexp_packa->self#module_expraacc|Pexp_open(a,b)->letacc=self#open_declarationaaccinletacc=self#expressionbaccinacc|Pexp_letopa->self#letopaacc|Pexp_extensiona->self#extensionaacc|Pexp_unreachable->accmethodcase:case->'acc->'acc=fun{pc_lhs;pc_guard;pc_rhs}acc->letacc=self#patternpc_lhsaccinletacc=self#optionself#expressionpc_guardaccinletacc=self#expressionpc_rhsaccinaccmethodletop:letop->'acc->'acc=fun{let_;ands;body}acc->letacc=self#binding_oplet_accinletacc=self#listself#binding_opandsaccinletacc=self#expressionbodyaccinaccmethodbinding_op:binding_op->'acc->'acc=fun{pbop_op;pbop_pat;pbop_exp;pbop_loc}acc->letacc=self#locself#stringpbop_opaccinletacc=self#patternpbop_pataccinletacc=self#expressionpbop_expaccinletacc=self#locationpbop_locaccinaccmethodfunction_param_desc:function_param_desc->'acc->'acc=funxacc->matchxwith|Pparam_val(a,b,c)->letacc=self#arg_labelaaccinletacc=self#optionself#expressionbaccinletacc=self#patterncaccinacc|Pparam_newtypea->self#locself#stringaaccmethodfunction_param:function_param->'acc->'acc=fun{pparam_loc;pparam_desc}acc->letacc=self#locationpparam_locaccinletacc=self#function_param_descpparam_descaccinaccmethodfunction_body:function_body->'acc->'acc=funxacc->matchxwith|Pfunction_bodya->self#expressionaacc|Pfunction_cases(a,b,c)->letacc=self#casesaaccinletacc=self#locationbaccinletacc=self#attributescaccinaccmethodtype_constraint:type_constraint->'acc->'acc=funxacc->matchxwith|Pconstrainta->self#core_typeaacc|Pcoerce(a,b)->letacc=self#optionself#core_typeaaccinletacc=self#core_typebaccinaccmethodvalue_description:value_description->'acc->'acc=fun{pval_name;pval_type;pval_prim;pval_attributes;pval_loc}acc->letacc=self#locself#stringpval_nameaccinletacc=self#core_typepval_typeaccinletacc=self#listself#stringpval_primaccinletacc=self#attributespval_attributesaccinletacc=self#locationpval_locaccinaccmethodtype_declaration:type_declaration->'acc->'acc=fun{ptype_name;ptype_params;ptype_cstrs;ptype_kind;ptype_private;ptype_manifest;ptype_attributes;ptype_loc;}acc->letacc=self#locself#stringptype_nameaccinletacc=self#list(fun(a,b)acc->letacc=self#core_typeaaccinletacc=(fun(a,b)acc->letacc=self#varianceaaccinletacc=self#injectivitybaccinacc)baccinacc)ptype_paramsaccinletacc=self#list(fun(a,b,c)acc->letacc=self#core_typeaaccinletacc=self#core_typebaccinletacc=self#locationcaccinacc)ptype_cstrsaccinletacc=self#type_kindptype_kindaccinletacc=self#private_flagptype_privateaccinletacc=self#optionself#core_typeptype_manifestaccinletacc=self#attributesptype_attributesaccinletacc=self#locationptype_locaccinaccmethodtype_kind:type_kind->'acc->'acc=funxacc->matchxwith|Ptype_abstract->acc|Ptype_varianta->self#listself#constructor_declarationaacc|Ptype_recorda->self#listself#label_declarationaacc|Ptype_open->accmethodlabel_declaration:label_declaration->'acc->'acc=fun{pld_name;pld_mutable;pld_type;pld_loc;pld_attributes}acc->letacc=self#locself#stringpld_nameaccinletacc=self#mutable_flagpld_mutableaccinletacc=self#core_typepld_typeaccinletacc=self#locationpld_locaccinletacc=self#attributespld_attributesaccinaccmethodconstructor_declaration:constructor_declaration->'acc->'acc=fun{pcd_name;pcd_vars;pcd_args;pcd_res;pcd_loc;pcd_attributes}acc->letacc=self#locself#stringpcd_nameaccinletacc=self#list(self#locself#string)pcd_varsaccinletacc=self#constructor_argumentspcd_argsaccinletacc=self#optionself#core_typepcd_resaccinletacc=self#locationpcd_locaccinletacc=self#attributespcd_attributesaccinaccmethodconstructor_arguments:constructor_arguments->'acc->'acc=funxacc->matchxwith|Pcstr_tuplea->self#listself#core_typeaacc|Pcstr_recorda->self#listself#label_declarationaaccmethodtype_extension:type_extension->'acc->'acc=fun{ptyext_path;ptyext_params;ptyext_constructors;ptyext_private;ptyext_loc;ptyext_attributes;}acc->letacc=self#longident_locptyext_pathaccinletacc=self#list(fun(a,b)acc->letacc=self#core_typeaaccinletacc=(fun(a,b)acc->letacc=self#varianceaaccinletacc=self#injectivitybaccinacc)baccinacc)ptyext_paramsaccinletacc=self#listself#extension_constructorptyext_constructorsaccinletacc=self#private_flagptyext_privateaccinletacc=self#locationptyext_locaccinletacc=self#attributesptyext_attributesaccinaccmethodextension_constructor:extension_constructor->'acc->'acc=fun{pext_name;pext_kind;pext_loc;pext_attributes}acc->letacc=self#locself#stringpext_nameaccinletacc=self#extension_constructor_kindpext_kindaccinletacc=self#locationpext_locaccinletacc=self#attributespext_attributesaccinaccmethodtype_exception:type_exception->'acc->'acc=fun{ptyexn_constructor;ptyexn_loc;ptyexn_attributes}acc->letacc=self#extension_constructorptyexn_constructoraccinletacc=self#locationptyexn_locaccinletacc=self#attributesptyexn_attributesaccinaccmethodextension_constructor_kind:extension_constructor_kind->'acc->'acc=funxacc->matchxwith|Pext_decl(a,b,c)->letacc=self#list(self#locself#string)aaccinletacc=self#constructor_argumentsbaccinletacc=self#optionself#core_typecaccinacc|Pext_rebinda->self#longident_locaaccmethodclass_type:class_type->'acc->'acc=fun{pcty_desc;pcty_loc;pcty_attributes}acc->letacc=self#class_type_descpcty_descaccinletacc=self#locationpcty_locaccinletacc=self#attributespcty_attributesaccinaccmethodclass_type_desc:class_type_desc->'acc->'acc=funxacc->matchxwith|Pcty_constr(a,b)->letacc=self#longident_locaaccinletacc=self#listself#core_typebaccinacc|Pcty_signaturea->self#class_signatureaacc|Pcty_arrow(a,b,c)->letacc=self#arg_labelaaccinletacc=self#core_typebaccinletacc=self#class_typecaccinacc|Pcty_extensiona->self#extensionaacc|Pcty_open(a,b)->letacc=self#open_descriptionaaccinletacc=self#class_typebaccinaccmethodclass_signature:class_signature->'acc->'acc=fun{pcsig_self;pcsig_fields}acc->letacc=self#core_typepcsig_selfaccinletacc=self#listself#class_type_fieldpcsig_fieldsaccinaccmethodclass_type_field:class_type_field->'acc->'acc=fun{pctf_desc;pctf_loc;pctf_attributes}acc->letacc=self#class_type_field_descpctf_descaccinletacc=self#locationpctf_locaccinletacc=self#attributespctf_attributesaccinaccmethodclass_type_field_desc:class_type_field_desc->'acc->'acc=funxacc->matchxwith|Pctf_inherita->self#class_typeaacc|Pctf_vala->(fun(a,b,c,d)acc->letacc=self#locself#labelaaccinletacc=self#mutable_flagbaccinletacc=self#virtual_flagcaccinletacc=self#core_typedaccinacc)aacc|Pctf_methoda->(fun(a,b,c,d)acc->letacc=self#locself#labelaaccinletacc=self#private_flagbaccinletacc=self#virtual_flagcaccinletacc=self#core_typedaccinacc)aacc|Pctf_constrainta->(fun(a,b)acc->letacc=self#core_typeaaccinletacc=self#core_typebaccinacc)aacc|Pctf_attributea->self#attributeaacc|Pctf_extensiona->self#extensionaaccmethodclass_infos:'a.('a->'acc->'acc)->'aclass_infos->'acc->'acc=fun_a{pci_virt;pci_params;pci_name;pci_expr;pci_loc;pci_attributes}acc->letacc=self#virtual_flagpci_virtaccinletacc=self#list(fun(a,b)acc->letacc=self#core_typeaaccinletacc=(fun(a,b)acc->letacc=self#varianceaaccinletacc=self#injectivitybaccinacc)baccinacc)pci_paramsaccinletacc=self#locself#stringpci_nameaccinletacc=_apci_expraccinletacc=self#locationpci_locaccinletacc=self#attributespci_attributesaccinaccmethodclass_description:class_description->'acc->'acc=self#class_infosself#class_typemethodclass_type_declaration:class_type_declaration->'acc->'acc=self#class_infosself#class_typemethodclass_expr:class_expr->'acc->'acc=fun{pcl_desc;pcl_loc;pcl_attributes}acc->letacc=self#class_expr_descpcl_descaccinletacc=self#locationpcl_locaccinletacc=self#attributespcl_attributesaccinaccmethodclass_expr_desc:class_expr_desc->'acc->'acc=funxacc->matchxwith|Pcl_constr(a,b)->letacc=self#longident_locaaccinletacc=self#listself#core_typebaccinacc|Pcl_structurea->self#class_structureaacc|Pcl_fun(a,b,c,d)->letacc=self#arg_labelaaccinletacc=self#optionself#expressionbaccinletacc=self#patterncaccinletacc=self#class_exprdaccinacc|Pcl_apply(a,b)->letacc=self#class_expraaccinletacc=self#list(fun(a,b)acc->letacc=self#arg_labelaaccinletacc=self#expressionbaccinacc)baccinacc|Pcl_let(a,b,c)->letacc=self#rec_flagaaccinletacc=self#listself#value_bindingbaccinletacc=self#class_exprcaccinacc|Pcl_constraint(a,b)->letacc=self#class_expraaccinletacc=self#class_typebaccinacc|Pcl_extensiona->self#extensionaacc|Pcl_open(a,b)->letacc=self#open_descriptionaaccinletacc=self#class_exprbaccinaccmethodclass_structure:class_structure->'acc->'acc=fun{pcstr_self;pcstr_fields}acc->letacc=self#patternpcstr_selfaccinletacc=self#listself#class_fieldpcstr_fieldsaccinaccmethodclass_field:class_field->'acc->'acc=fun{pcf_desc;pcf_loc;pcf_attributes}acc->letacc=self#class_field_descpcf_descaccinletacc=self#locationpcf_locaccinletacc=self#attributespcf_attributesaccinaccmethodclass_field_desc:class_field_desc->'acc->'acc=funxacc->matchxwith|Pcf_inherit(a,b,c)->letacc=self#override_flagaaccinletacc=self#class_exprbaccinletacc=self#option(self#locself#string)caccinacc|Pcf_vala->(fun(a,b,c)acc->letacc=self#locself#labelaaccinletacc=self#mutable_flagbaccinletacc=self#class_field_kindcaccinacc)aacc|Pcf_methoda->(fun(a,b,c)acc->letacc=self#locself#labelaaccinletacc=self#private_flagbaccinletacc=self#class_field_kindcaccinacc)aacc|Pcf_constrainta->(fun(a,b)acc->letacc=self#core_typeaaccinletacc=self#core_typebaccinacc)aacc|Pcf_initializera->self#expressionaacc|Pcf_attributea->self#attributeaacc|Pcf_extensiona->self#extensionaaccmethodclass_field_kind:class_field_kind->'acc->'acc=funxacc->matchxwith|Cfk_virtuala->self#core_typeaacc|Cfk_concrete(a,b)->letacc=self#override_flagaaccinletacc=self#expressionbaccinaccmethodclass_declaration:class_declaration->'acc->'acc=self#class_infosself#class_exprmethodmodule_type:module_type->'acc->'acc=fun{pmty_desc;pmty_loc;pmty_attributes}acc->letacc=self#module_type_descpmty_descaccinletacc=self#locationpmty_locaccinletacc=self#attributespmty_attributesaccinaccmethodmodule_type_desc:module_type_desc->'acc->'acc=funxacc->matchxwith|Pmty_identa->self#longident_locaacc|Pmty_signaturea->self#signatureaacc|Pmty_functor(a,b)->letacc=self#functor_parameteraaccinletacc=self#module_typebaccinacc|Pmty_with(a,b)->letacc=self#module_typeaaccinletacc=self#listself#with_constraintbaccinacc|Pmty_typeofa->self#module_expraacc|Pmty_extensiona->self#extensionaacc|Pmty_aliasa->self#longident_locaaccmethodfunctor_parameter:functor_parameter->'acc->'acc=funxacc->matchxwith|Unit->acc|Named(a,b)->letacc=self#loc(self#optionself#string)aaccinletacc=self#module_typebaccinaccmethodsignature:signature->'acc->'acc=self#listself#signature_itemmethodsignature_item:signature_item->'acc->'acc=fun{psig_desc;psig_loc}acc->letacc=self#signature_item_descpsig_descaccinletacc=self#locationpsig_locaccinaccmethodsignature_item_desc:signature_item_desc->'acc->'acc=funxacc->matchxwith|Psig_valuea->self#value_descriptionaacc|Psig_type(a,b)->letacc=self#rec_flagaaccinletacc=self#listself#type_declarationbaccinacc|Psig_typesubsta->self#listself#type_declarationaacc|Psig_typexta->self#type_extensionaacc|Psig_exceptiona->self#type_exceptionaacc|Psig_modulea->self#module_declarationaacc|Psig_modsubsta->self#module_substitutionaacc|Psig_recmodulea->self#listself#module_declarationaacc|Psig_modtypea->self#module_type_declarationaacc|Psig_modtypesubsta->self#module_type_declarationaacc|Psig_opena->self#open_descriptionaacc|Psig_includea->self#include_descriptionaacc|Psig_classa->self#listself#class_descriptionaacc|Psig_class_typea->self#listself#class_type_declarationaacc|Psig_attributea->self#attributeaacc|Psig_extension(a,b)->letacc=self#extensionaaccinletacc=self#attributesbaccinaccmethodmodule_declaration:module_declaration->'acc->'acc=fun{pmd_name;pmd_type;pmd_attributes;pmd_loc}acc->letacc=self#loc(self#optionself#string)pmd_nameaccinletacc=self#module_typepmd_typeaccinletacc=self#attributespmd_attributesaccinletacc=self#locationpmd_locaccinaccmethodmodule_substitution:module_substitution->'acc->'acc=fun{pms_name;pms_manifest;pms_attributes;pms_loc}acc->letacc=self#locself#stringpms_nameaccinletacc=self#longident_locpms_manifestaccinletacc=self#attributespms_attributesaccinletacc=self#locationpms_locaccinaccmethodmodule_type_declaration:module_type_declaration->'acc->'acc=fun{pmtd_name;pmtd_type;pmtd_attributes;pmtd_loc}acc->letacc=self#locself#stringpmtd_nameaccinletacc=self#optionself#module_typepmtd_typeaccinletacc=self#attributespmtd_attributesaccinletacc=self#locationpmtd_locaccinaccmethodopen_infos:'a.('a->'acc->'acc)->'aopen_infos->'acc->'acc=fun_a{popen_expr;popen_override;popen_loc;popen_attributes}acc->letacc=_apopen_expraccinletacc=self#override_flagpopen_overrideaccinletacc=self#locationpopen_locaccinletacc=self#attributespopen_attributesaccinaccmethodopen_description:open_description->'acc->'acc=self#open_infosself#longident_locmethodopen_declaration:open_declaration->'acc->'acc=self#open_infosself#module_exprmethodinclude_infos:'a.('a->'acc->'acc)->'ainclude_infos->'acc->'acc=fun_a{pincl_mod;pincl_loc;pincl_attributes}acc->letacc=_apincl_modaccinletacc=self#locationpincl_locaccinletacc=self#attributespincl_attributesaccinaccmethodinclude_description:include_description->'acc->'acc=self#include_infosself#module_typemethodinclude_declaration:include_declaration->'acc->'acc=self#include_infosself#module_exprmethodwith_constraint:with_constraint->'acc->'acc=funxacc->matchxwith|Pwith_type(a,b)->letacc=self#longident_locaaccinletacc=self#type_declarationbaccinacc|Pwith_module(a,b)->letacc=self#longident_locaaccinletacc=self#longident_locbaccinacc|Pwith_modtype(a,b)->letacc=self#longident_locaaccinletacc=self#module_typebaccinacc|Pwith_modtypesubst(a,b)->letacc=self#longident_locaaccinletacc=self#module_typebaccinacc|Pwith_typesubst(a,b)->letacc=self#longident_locaaccinletacc=self#type_declarationbaccinacc|Pwith_modsubst(a,b)->letacc=self#longident_locaaccinletacc=self#longident_locbaccinaccmethodmodule_expr:module_expr->'acc->'acc=fun{pmod_desc;pmod_loc;pmod_attributes}acc->letacc=self#module_expr_descpmod_descaccinletacc=self#locationpmod_locaccinletacc=self#attributespmod_attributesaccinaccmethodmodule_expr_desc:module_expr_desc->'acc->'acc=funxacc->matchxwith|Pmod_identa->self#longident_locaacc|Pmod_structurea->self#structureaacc|Pmod_functor(a,b)->letacc=self#functor_parameteraaccinletacc=self#module_exprbaccinacc|Pmod_apply(a,b)->letacc=self#module_expraaccinletacc=self#module_exprbaccinacc|Pmod_apply_unita->self#module_expraacc|Pmod_constraint(a,b)->letacc=self#module_expraaccinletacc=self#module_typebaccinacc|Pmod_unpacka->self#expressionaacc|Pmod_extensiona->self#extensionaaccmethodstructure:structure->'acc->'acc=self#listself#structure_itemmethodstructure_item:structure_item->'acc->'acc=fun{pstr_desc;pstr_loc}acc->letacc=self#structure_item_descpstr_descaccinletacc=self#locationpstr_locaccinaccmethodstructure_item_desc:structure_item_desc->'acc->'acc=funxacc->matchxwith|Pstr_eval(a,b)->letacc=self#expressionaaccinletacc=self#attributesbaccinacc|Pstr_value(a,b)->letacc=self#rec_flagaaccinletacc=self#listself#value_bindingbaccinacc|Pstr_primitivea->self#value_descriptionaacc|Pstr_type(a,b)->letacc=self#rec_flagaaccinletacc=self#listself#type_declarationbaccinacc|Pstr_typexta->self#type_extensionaacc|Pstr_exceptiona->self#type_exceptionaacc|Pstr_modulea->self#module_bindingaacc|Pstr_recmodulea->self#listself#module_bindingaacc|Pstr_modtypea->self#module_type_declarationaacc|Pstr_opena->self#open_declarationaacc|Pstr_classa->self#listself#class_declarationaacc|Pstr_class_typea->self#listself#class_type_declarationaacc|Pstr_includea->self#include_declarationaacc|Pstr_attributea->self#attributeaacc|Pstr_extension(a,b)->letacc=self#extensionaaccinletacc=self#attributesbaccinaccmethodvalue_constraint:value_constraint->'acc->'acc=funxacc->matchxwith|Pvc_constraint{locally_abstract_univars;typ}->letacc=self#list(self#locself#string)locally_abstract_univarsaccinletacc=self#core_typetypaccinacc|Pvc_coercion{ground;coercion}->letacc=self#optionself#core_typegroundaccinletacc=self#core_typecoercionaccinaccmethodvalue_binding:value_binding->'acc->'acc=fun{pvb_pat;pvb_expr;pvb_constraint;pvb_attributes;pvb_loc}acc->letacc=self#patternpvb_pataccinletacc=self#expressionpvb_expraccinletacc=self#optionself#value_constraintpvb_constraintaccinletacc=self#attributespvb_attributesaccinletacc=self#locationpvb_locaccinaccmethodmodule_binding:module_binding->'acc->'acc=fun{pmb_name;pmb_expr;pmb_attributes;pmb_loc}acc->letacc=self#loc(self#optionself#string)pmb_nameaccinletacc=self#module_exprpmb_expraccinletacc=self#attributespmb_attributesaccinletacc=self#locationpmb_locaccinaccmethodtoplevel_phrase:toplevel_phrase->'acc->'acc=funxacc->matchxwith|Ptop_defa->self#structureaacc|Ptop_dira->self#toplevel_directiveaaccmethodtoplevel_directive:toplevel_directive->'acc->'acc=fun{pdir_name;pdir_arg;pdir_loc}acc->letacc=self#locself#stringpdir_nameaccinletacc=self#optionself#directive_argumentpdir_argaccinletacc=self#locationpdir_locaccinaccmethoddirective_argument:directive_argument->'acc->'acc=fun{pdira_desc;pdira_loc}acc->letacc=self#directive_argument_descpdira_descaccinletacc=self#locationpdira_locaccinaccmethoddirective_argument_desc:directive_argument_desc->'acc->'acc=funxacc->matchxwith|Pdir_stringa->self#stringaacc|Pdir_int(a,b)->letacc=self#stringaaccinletacc=self#optionself#charbaccinacc|Pdir_identa->self#longidentaacc|Pdir_boola->self#boolaaccmethodcases:cases->'acc->'acc=self#listself#caseendclassvirtual['acc]fold_map=object(self)methodvirtualbool:bool->'acc->bool*'accmethodvirtualchar:char->'acc->char*'accmethodvirtualint:int->'acc->int*'accmethodvirtuallist:'a.('a->'acc->'a*'acc)->'alist->'acc->'alist*'accmethodvirtualoption:'a.('a->'acc->'a*'acc)->'aoption->'acc->'aoption*'accmethodvirtualstring:string->'acc->string*'accmethodposition:position->'acc->position*'acc=fun{pos_fname;pos_lnum;pos_bol;pos_cnum}acc->letpos_fname,acc=self#stringpos_fnameaccinletpos_lnum,acc=self#intpos_lnumaccinletpos_bol,acc=self#intpos_bolaccinletpos_cnum,acc=self#intpos_cnumaccin({pos_fname;pos_lnum;pos_bol;pos_cnum},acc)methodlocation:location->'acc->location*'acc=fun{loc_start;loc_end;loc_ghost}acc->letloc_start,acc=self#positionloc_startaccinletloc_end,acc=self#positionloc_endaccinletloc_ghost,acc=self#boolloc_ghostaccin({loc_start;loc_end;loc_ghost},acc)methodlocation_stack:location_stack->'acc->location_stack*'acc=self#listself#locationmethodloc:'a.('a->'acc->'a*'acc)->'aloc->'acc->'aloc*'acc=fun_a{txt;loc}acc->lettxt,acc=_atxtaccinletloc,acc=self#locationlocaccin({txt;loc},acc)methodlongident:longident->'acc->longident*'acc=funxacc->matchxwith|Lidenta->leta,acc=self#stringaaccin(Lidenta,acc)|Ldot(a,b)->leta,acc=self#longidentaaccinletb,acc=self#stringbaccin(Ldot(a,b),acc)|Lapply(a,b)->leta,acc=self#longidentaaccinletb,acc=self#longidentbaccin(Lapply(a,b),acc)methodlongident_loc:longident_loc->'acc->longident_loc*'acc=self#locself#longidentmethodrec_flag:rec_flag->'acc->rec_flag*'acc=funxacc->(x,acc)methoddirection_flag:direction_flag->'acc->direction_flag*'acc=funxacc->(x,acc)methodprivate_flag:private_flag->'acc->private_flag*'acc=funxacc->(x,acc)methodmutable_flag:mutable_flag->'acc->mutable_flag*'acc=funxacc->(x,acc)methodvirtual_flag:virtual_flag->'acc->virtual_flag*'acc=funxacc->(x,acc)methodoverride_flag:override_flag->'acc->override_flag*'acc=funxacc->(x,acc)methodclosed_flag:closed_flag->'acc->closed_flag*'acc=funxacc->(x,acc)methodlabel:label->'acc->label*'acc=self#stringmethodarg_label:arg_label->'acc->arg_label*'acc=funxacc->matchxwith|Nolabel->(Nolabel,acc)|Labelleda->leta,acc=self#stringaaccin(Labelleda,acc)|Optionala->leta,acc=self#stringaaccin(Optionala,acc)methodvariance:variance->'acc->variance*'acc=funxacc->(x,acc)methodinjectivity:injectivity->'acc->injectivity*'acc=funxacc->(x,acc)methodconstant:constant->'acc->constant*'acc=funxacc->matchxwith|Pconst_integer(a,b)->leta,acc=self#stringaaccinletb,acc=self#optionself#charbaccin(Pconst_integer(a,b),acc)|Pconst_chara->leta,acc=self#charaaccin(Pconst_chara,acc)|Pconst_string(a,b,c)->leta,acc=self#stringaaccinletb,acc=self#locationbaccinletc,acc=self#optionself#stringcaccin(Pconst_string(a,b,c),acc)|Pconst_float(a,b)->leta,acc=self#stringaaccinletb,acc=self#optionself#charbaccin(Pconst_float(a,b),acc)methodattribute:attribute->'acc->attribute*'acc=fun{attr_name;attr_payload;attr_loc}acc->letattr_name,acc=self#locself#stringattr_nameaccinletattr_payload,acc=self#payloadattr_payloadaccinletattr_loc,acc=self#locationattr_locaccin({attr_name;attr_payload;attr_loc},acc)methodextension:extension->'acc->extension*'acc=fun(a,b)acc->leta,acc=self#locself#stringaaccinletb,acc=self#payloadbaccin((a,b),acc)methodattributes:attributes->'acc->attributes*'acc=self#listself#attributemethodpayload:payload->'acc->payload*'acc=funxacc->matchxwith|PStra->leta,acc=self#structureaaccin(PStra,acc)|PSiga->leta,acc=self#signatureaaccin(PSiga,acc)|PTypa->leta,acc=self#core_typeaaccin(PTypa,acc)|PPat(a,b)->leta,acc=self#patternaaccinletb,acc=self#optionself#expressionbaccin(PPat(a,b),acc)methodcore_type:core_type->'acc->core_type*'acc=fun{ptyp_desc;ptyp_loc;ptyp_loc_stack;ptyp_attributes}acc->letptyp_desc,acc=self#core_type_descptyp_descaccinletptyp_loc,acc=self#locationptyp_locaccinletptyp_loc_stack,acc=self#location_stackptyp_loc_stackaccinletptyp_attributes,acc=self#attributesptyp_attributesaccin({ptyp_desc;ptyp_loc;ptyp_loc_stack;ptyp_attributes},acc)methodcore_type_desc:core_type_desc->'acc->core_type_desc*'acc=funxacc->matchxwith|Ptyp_any->(Ptyp_any,acc)|Ptyp_vara->leta,acc=self#stringaaccin(Ptyp_vara,acc)|Ptyp_arrow(a,b,c)->leta,acc=self#arg_labelaaccinletb,acc=self#core_typebaccinletc,acc=self#core_typecaccin(Ptyp_arrow(a,b,c),acc)|Ptyp_tuplea->leta,acc=self#listself#core_typeaaccin(Ptyp_tuplea,acc)|Ptyp_constr(a,b)->leta,acc=self#longident_locaaccinletb,acc=self#listself#core_typebaccin(Ptyp_constr(a,b),acc)|Ptyp_object(a,b)->leta,acc=self#listself#object_fieldaaccinletb,acc=self#closed_flagbaccin(Ptyp_object(a,b),acc)|Ptyp_class(a,b)->leta,acc=self#longident_locaaccinletb,acc=self#listself#core_typebaccin(Ptyp_class(a,b),acc)|Ptyp_alias(a,b)->leta,acc=self#core_typeaaccinletb,acc=self#locself#stringbaccin(Ptyp_alias(a,b),acc)|Ptyp_variant(a,b,c)->leta,acc=self#listself#row_fieldaaccinletb,acc=self#closed_flagbaccinletc,acc=self#option(self#listself#label)caccin(Ptyp_variant(a,b,c),acc)|Ptyp_poly(a,b)->leta,acc=self#list(self#locself#string)aaccinletb,acc=self#core_typebaccin(Ptyp_poly(a,b),acc)|Ptyp_packagea->leta,acc=self#package_typeaaccin(Ptyp_packagea,acc)|Ptyp_open(a,b)->leta,acc=self#longident_locaaccinletb,acc=self#core_typebaccin(Ptyp_open(a,b),acc)|Ptyp_extensiona->leta,acc=self#extensionaaccin(Ptyp_extensiona,acc)methodpackage_type:package_type->'acc->package_type*'acc=fun(a,b)acc->leta,acc=self#longident_locaaccinletb,acc=self#list(fun(a,b)acc->leta,acc=self#longident_locaaccinletb,acc=self#core_typebaccin((a,b),acc))baccin((a,b),acc)methodrow_field:row_field->'acc->row_field*'acc=fun{prf_desc;prf_loc;prf_attributes}acc->letprf_desc,acc=self#row_field_descprf_descaccinletprf_loc,acc=self#locationprf_locaccinletprf_attributes,acc=self#attributesprf_attributesaccin({prf_desc;prf_loc;prf_attributes},acc)methodrow_field_desc:row_field_desc->'acc->row_field_desc*'acc=funxacc->matchxwith|Rtag(a,b,c)->leta,acc=self#locself#labelaaccinletb,acc=self#boolbaccinletc,acc=self#listself#core_typecaccin(Rtag(a,b,c),acc)|Rinherita->leta,acc=self#core_typeaaccin(Rinherita,acc)methodobject_field:object_field->'acc->object_field*'acc=fun{pof_desc;pof_loc;pof_attributes}acc->letpof_desc,acc=self#object_field_descpof_descaccinletpof_loc,acc=self#locationpof_locaccinletpof_attributes,acc=self#attributespof_attributesaccin({pof_desc;pof_loc;pof_attributes},acc)methodobject_field_desc:object_field_desc->'acc->object_field_desc*'acc=funxacc->matchxwith|Otag(a,b)->leta,acc=self#locself#labelaaccinletb,acc=self#core_typebaccin(Otag(a,b),acc)|Oinherita->leta,acc=self#core_typeaaccin(Oinherita,acc)methodpattern:pattern->'acc->pattern*'acc=fun{ppat_desc;ppat_loc;ppat_loc_stack;ppat_attributes}acc->letppat_desc,acc=self#pattern_descppat_descaccinletppat_loc,acc=self#locationppat_locaccinletppat_loc_stack,acc=self#location_stackppat_loc_stackaccinletppat_attributes,acc=self#attributesppat_attributesaccin({ppat_desc;ppat_loc;ppat_loc_stack;ppat_attributes},acc)methodpattern_desc:pattern_desc->'acc->pattern_desc*'acc=funxacc->matchxwith|Ppat_any->(Ppat_any,acc)|Ppat_vara->leta,acc=self#locself#stringaaccin(Ppat_vara,acc)|Ppat_alias(a,b)->leta,acc=self#patternaaccinletb,acc=self#locself#stringbaccin(Ppat_alias(a,b),acc)|Ppat_constanta->leta,acc=self#constantaaccin(Ppat_constanta,acc)|Ppat_interval(a,b)->leta,acc=self#constantaaccinletb,acc=self#constantbaccin(Ppat_interval(a,b),acc)|Ppat_tuplea->leta,acc=self#listself#patternaaccin(Ppat_tuplea,acc)|Ppat_construct(a,b)->leta,acc=self#longident_locaaccinletb,acc=self#option(fun(a,b)acc->leta,acc=self#list(self#locself#string)aaccinletb,acc=self#patternbaccin((a,b),acc))baccin(Ppat_construct(a,b),acc)|Ppat_variant(a,b)->leta,acc=self#labelaaccinletb,acc=self#optionself#patternbaccin(Ppat_variant(a,b),acc)|Ppat_record(a,b)->leta,acc=self#list(fun(a,b)acc->leta,acc=self#longident_locaaccinletb,acc=self#patternbaccin((a,b),acc))aaccinletb,acc=self#closed_flagbaccin(Ppat_record(a,b),acc)|Ppat_arraya->leta,acc=self#listself#patternaaccin(Ppat_arraya,acc)|Ppat_or(a,b)->leta,acc=self#patternaaccinletb,acc=self#patternbaccin(Ppat_or(a,b),acc)|Ppat_constraint(a,b)->leta,acc=self#patternaaccinletb,acc=self#core_typebaccin(Ppat_constraint(a,b),acc)|Ppat_typea->leta,acc=self#longident_locaaccin(Ppat_typea,acc)|Ppat_lazya->leta,acc=self#patternaaccin(Ppat_lazya,acc)|Ppat_unpacka->leta,acc=self#loc(self#optionself#string)aaccin(Ppat_unpacka,acc)|Ppat_exceptiona->leta,acc=self#patternaaccin(Ppat_exceptiona,acc)|Ppat_extensiona->leta,acc=self#extensionaaccin(Ppat_extensiona,acc)|Ppat_open(a,b)->leta,acc=self#longident_locaaccinletb,acc=self#patternbaccin(Ppat_open(a,b),acc)methodexpression:expression->'acc->expression*'acc=fun{pexp_desc;pexp_loc;pexp_loc_stack;pexp_attributes}acc->letpexp_desc,acc=self#expression_descpexp_descaccinletpexp_loc,acc=self#locationpexp_locaccinletpexp_loc_stack,acc=self#location_stackpexp_loc_stackaccinletpexp_attributes,acc=self#attributespexp_attributesaccin({pexp_desc;pexp_loc;pexp_loc_stack;pexp_attributes},acc)methodexpression_desc:expression_desc->'acc->expression_desc*'acc=funxacc->matchxwith|Pexp_identa->leta,acc=self#longident_locaaccin(Pexp_identa,acc)|Pexp_constanta->leta,acc=self#constantaaccin(Pexp_constanta,acc)|Pexp_let(a,b,c)->leta,acc=self#rec_flagaaccinletb,acc=self#listself#value_bindingbaccinletc,acc=self#expressioncaccin(Pexp_let(a,b,c),acc)|Pexp_function(a,b,c)->leta,acc=self#listself#function_paramaaccinletb,acc=self#optionself#type_constraintbaccinletc,acc=self#function_bodycaccin(Pexp_function(a,b,c),acc)|Pexp_apply(a,b)->leta,acc=self#expressionaaccinletb,acc=self#list(fun(a,b)acc->leta,acc=self#arg_labelaaccinletb,acc=self#expressionbaccin((a,b),acc))baccin(Pexp_apply(a,b),acc)|Pexp_match(a,b)->leta,acc=self#expressionaaccinletb,acc=self#casesbaccin(Pexp_match(a,b),acc)|Pexp_try(a,b)->leta,acc=self#expressionaaccinletb,acc=self#casesbaccin(Pexp_try(a,b),acc)|Pexp_tuplea->leta,acc=self#listself#expressionaaccin(Pexp_tuplea,acc)|Pexp_construct(a,b)->leta,acc=self#longident_locaaccinletb,acc=self#optionself#expressionbaccin(Pexp_construct(a,b),acc)|Pexp_variant(a,b)->leta,acc=self#labelaaccinletb,acc=self#optionself#expressionbaccin(Pexp_variant(a,b),acc)|Pexp_record(a,b)->leta,acc=self#list(fun(a,b)acc->leta,acc=self#longident_locaaccinletb,acc=self#expressionbaccin((a,b),acc))aaccinletb,acc=self#optionself#expressionbaccin(Pexp_record(a,b),acc)|Pexp_field(a,b)->leta,acc=self#expressionaaccinletb,acc=self#longident_locbaccin(Pexp_field(a,b),acc)|Pexp_setfield(a,b,c)->leta,acc=self#expressionaaccinletb,acc=self#longident_locbaccinletc,acc=self#expressioncaccin(Pexp_setfield(a,b,c),acc)|Pexp_arraya->leta,acc=self#listself#expressionaaccin(Pexp_arraya,acc)|Pexp_ifthenelse(a,b,c)->leta,acc=self#expressionaaccinletb,acc=self#expressionbaccinletc,acc=self#optionself#expressioncaccin(Pexp_ifthenelse(a,b,c),acc)|Pexp_sequence(a,b)->leta,acc=self#expressionaaccinletb,acc=self#expressionbaccin(Pexp_sequence(a,b),acc)|Pexp_while(a,b)->leta,acc=self#expressionaaccinletb,acc=self#expressionbaccin(Pexp_while(a,b),acc)|Pexp_for(a,b,c,d,e)->leta,acc=self#patternaaccinletb,acc=self#expressionbaccinletc,acc=self#expressioncaccinletd,acc=self#direction_flagdaccinlete,acc=self#expressioneaccin(Pexp_for(a,b,c,d,e),acc)|Pexp_constraint(a,b)->leta,acc=self#expressionaaccinletb,acc=self#core_typebaccin(Pexp_constraint(a,b),acc)|Pexp_coerce(a,b,c)->leta,acc=self#expressionaaccinletb,acc=self#optionself#core_typebaccinletc,acc=self#core_typecaccin(Pexp_coerce(a,b,c),acc)|Pexp_send(a,b)->leta,acc=self#expressionaaccinletb,acc=self#locself#labelbaccin(Pexp_send(a,b),acc)|Pexp_newa->leta,acc=self#longident_locaaccin(Pexp_newa,acc)|Pexp_setinstvar(a,b)->leta,acc=self#locself#labelaaccinletb,acc=self#expressionbaccin(Pexp_setinstvar(a,b),acc)|Pexp_overridea->leta,acc=self#list(fun(a,b)acc->leta,acc=self#locself#labelaaccinletb,acc=self#expressionbaccin((a,b),acc))aaccin(Pexp_overridea,acc)|Pexp_letmodule(a,b,c)->leta,acc=self#loc(self#optionself#string)aaccinletb,acc=self#module_exprbaccinletc,acc=self#expressioncaccin(Pexp_letmodule(a,b,c),acc)|Pexp_letexception(a,b)->leta,acc=self#extension_constructoraaccinletb,acc=self#expressionbaccin(Pexp_letexception(a,b),acc)|Pexp_asserta->leta,acc=self#expressionaaccin(Pexp_asserta,acc)|Pexp_lazya->leta,acc=self#expressionaaccin(Pexp_lazya,acc)|Pexp_poly(a,b)->leta,acc=self#expressionaaccinletb,acc=self#optionself#core_typebaccin(Pexp_poly(a,b),acc)|Pexp_objecta->leta,acc=self#class_structureaaccin(Pexp_objecta,acc)|Pexp_newtype(a,b)->leta,acc=self#locself#stringaaccinletb,acc=self#expressionbaccin(Pexp_newtype(a,b),acc)|Pexp_packa->leta,acc=self#module_expraaccin(Pexp_packa,acc)|Pexp_open(a,b)->leta,acc=self#open_declarationaaccinletb,acc=self#expressionbaccin(Pexp_open(a,b),acc)|Pexp_letopa->leta,acc=self#letopaaccin(Pexp_letopa,acc)|Pexp_extensiona->leta,acc=self#extensionaaccin(Pexp_extensiona,acc)|Pexp_unreachable->(Pexp_unreachable,acc)methodcase:case->'acc->case*'acc=fun{pc_lhs;pc_guard;pc_rhs}acc->letpc_lhs,acc=self#patternpc_lhsaccinletpc_guard,acc=self#optionself#expressionpc_guardaccinletpc_rhs,acc=self#expressionpc_rhsaccin({pc_lhs;pc_guard;pc_rhs},acc)methodletop:letop->'acc->letop*'acc=fun{let_;ands;body}acc->letlet_,acc=self#binding_oplet_accinletands,acc=self#listself#binding_opandsaccinletbody,acc=self#expressionbodyaccin({let_;ands;body},acc)methodbinding_op:binding_op->'acc->binding_op*'acc=fun{pbop_op;pbop_pat;pbop_exp;pbop_loc}acc->letpbop_op,acc=self#locself#stringpbop_opaccinletpbop_pat,acc=self#patternpbop_pataccinletpbop_exp,acc=self#expressionpbop_expaccinletpbop_loc,acc=self#locationpbop_locaccin({pbop_op;pbop_pat;pbop_exp;pbop_loc},acc)methodfunction_param_desc:function_param_desc->'acc->function_param_desc*'acc=funxacc->matchxwith|Pparam_val(a,b,c)->leta,acc=self#arg_labelaaccinletb,acc=self#optionself#expressionbaccinletc,acc=self#patterncaccin(Pparam_val(a,b,c),acc)|Pparam_newtypea->leta,acc=self#locself#stringaaccin(Pparam_newtypea,acc)methodfunction_param:function_param->'acc->function_param*'acc=fun{pparam_loc;pparam_desc}acc->letpparam_loc,acc=self#locationpparam_locaccinletpparam_desc,acc=self#function_param_descpparam_descaccin({pparam_loc;pparam_desc},acc)methodfunction_body:function_body->'acc->function_body*'acc=funxacc->matchxwith|Pfunction_bodya->leta,acc=self#expressionaaccin(Pfunction_bodya,acc)|Pfunction_cases(a,b,c)->leta,acc=self#casesaaccinletb,acc=self#locationbaccinletc,acc=self#attributescaccin(Pfunction_cases(a,b,c),acc)methodtype_constraint:type_constraint->'acc->type_constraint*'acc=funxacc->matchxwith|Pconstrainta->leta,acc=self#core_typeaaccin(Pconstrainta,acc)|Pcoerce(a,b)->leta,acc=self#optionself#core_typeaaccinletb,acc=self#core_typebaccin(Pcoerce(a,b),acc)methodvalue_description:value_description->'acc->value_description*'acc=fun{pval_name;pval_type;pval_prim;pval_attributes;pval_loc}acc->letpval_name,acc=self#locself#stringpval_nameaccinletpval_type,acc=self#core_typepval_typeaccinletpval_prim,acc=self#listself#stringpval_primaccinletpval_attributes,acc=self#attributespval_attributesaccinletpval_loc,acc=self#locationpval_locaccin({pval_name;pval_type;pval_prim;pval_attributes;pval_loc},acc)methodtype_declaration:type_declaration->'acc->type_declaration*'acc=fun{ptype_name;ptype_params;ptype_cstrs;ptype_kind;ptype_private;ptype_manifest;ptype_attributes;ptype_loc;}acc->letptype_name,acc=self#locself#stringptype_nameaccinletptype_params,acc=self#list(fun(a,b)acc->leta,acc=self#core_typeaaccinletb,acc=(fun(a,b)acc->leta,acc=self#varianceaaccinletb,acc=self#injectivitybaccin((a,b),acc))baccin((a,b),acc))ptype_paramsaccinletptype_cstrs,acc=self#list(fun(a,b,c)acc->leta,acc=self#core_typeaaccinletb,acc=self#core_typebaccinletc,acc=self#locationcaccin((a,b,c),acc))ptype_cstrsaccinletptype_kind,acc=self#type_kindptype_kindaccinletptype_private,acc=self#private_flagptype_privateaccinletptype_manifest,acc=self#optionself#core_typeptype_manifestaccinletptype_attributes,acc=self#attributesptype_attributesaccinletptype_loc,acc=self#locationptype_locaccin({ptype_name;ptype_params;ptype_cstrs;ptype_kind;ptype_private;ptype_manifest;ptype_attributes;ptype_loc;},acc)methodtype_kind:type_kind->'acc->type_kind*'acc=funxacc->matchxwith|Ptype_abstract->(Ptype_abstract,acc)|Ptype_varianta->leta,acc=self#listself#constructor_declarationaaccin(Ptype_varianta,acc)|Ptype_recorda->leta,acc=self#listself#label_declarationaaccin(Ptype_recorda,acc)|Ptype_open->(Ptype_open,acc)methodlabel_declaration:label_declaration->'acc->label_declaration*'acc=fun{pld_name;pld_mutable;pld_type;pld_loc;pld_attributes}acc->letpld_name,acc=self#locself#stringpld_nameaccinletpld_mutable,acc=self#mutable_flagpld_mutableaccinletpld_type,acc=self#core_typepld_typeaccinletpld_loc,acc=self#locationpld_locaccinletpld_attributes,acc=self#attributespld_attributesaccin({pld_name;pld_mutable;pld_type;pld_loc;pld_attributes},acc)methodconstructor_declaration:constructor_declaration->'acc->constructor_declaration*'acc=fun{pcd_name;pcd_vars;pcd_args;pcd_res;pcd_loc;pcd_attributes}acc->letpcd_name,acc=self#locself#stringpcd_nameaccinletpcd_vars,acc=self#list(self#locself#string)pcd_varsaccinletpcd_args,acc=self#constructor_argumentspcd_argsaccinletpcd_res,acc=self#optionself#core_typepcd_resaccinletpcd_loc,acc=self#locationpcd_locaccinletpcd_attributes,acc=self#attributespcd_attributesaccin({pcd_name;pcd_vars;pcd_args;pcd_res;pcd_loc;pcd_attributes},acc)methodconstructor_arguments:constructor_arguments->'acc->constructor_arguments*'acc=funxacc->matchxwith|Pcstr_tuplea->leta,acc=self#listself#core_typeaaccin(Pcstr_tuplea,acc)|Pcstr_recorda->leta,acc=self#listself#label_declarationaaccin(Pcstr_recorda,acc)methodtype_extension:type_extension->'acc->type_extension*'acc=fun{ptyext_path;ptyext_params;ptyext_constructors;ptyext_private;ptyext_loc;ptyext_attributes;}acc->letptyext_path,acc=self#longident_locptyext_pathaccinletptyext_params,acc=self#list(fun(a,b)acc->leta,acc=self#core_typeaaccinletb,acc=(fun(a,b)acc->leta,acc=self#varianceaaccinletb,acc=self#injectivitybaccin((a,b),acc))baccin((a,b),acc))ptyext_paramsaccinletptyext_constructors,acc=self#listself#extension_constructorptyext_constructorsaccinletptyext_private,acc=self#private_flagptyext_privateaccinletptyext_loc,acc=self#locationptyext_locaccinletptyext_attributes,acc=self#attributesptyext_attributesaccin({ptyext_path;ptyext_params;ptyext_constructors;ptyext_private;ptyext_loc;ptyext_attributes;},acc)methodextension_constructor:extension_constructor->'acc->extension_constructor*'acc=fun{pext_name;pext_kind;pext_loc;pext_attributes}acc->letpext_name,acc=self#locself#stringpext_nameaccinletpext_kind,acc=self#extension_constructor_kindpext_kindaccinletpext_loc,acc=self#locationpext_locaccinletpext_attributes,acc=self#attributespext_attributesaccin({pext_name;pext_kind;pext_loc;pext_attributes},acc)methodtype_exception:type_exception->'acc->type_exception*'acc=fun{ptyexn_constructor;ptyexn_loc;ptyexn_attributes}acc->letptyexn_constructor,acc=self#extension_constructorptyexn_constructoraccinletptyexn_loc,acc=self#locationptyexn_locaccinletptyexn_attributes,acc=self#attributesptyexn_attributesaccin({ptyexn_constructor;ptyexn_loc;ptyexn_attributes},acc)methodextension_constructor_kind:extension_constructor_kind->'acc->extension_constructor_kind*'acc=funxacc->matchxwith|Pext_decl(a,b,c)->leta,acc=self#list(self#locself#string)aaccinletb,acc=self#constructor_argumentsbaccinletc,acc=self#optionself#core_typecaccin(Pext_decl(a,b,c),acc)|Pext_rebinda->leta,acc=self#longident_locaaccin(Pext_rebinda,acc)methodclass_type:class_type->'acc->class_type*'acc=fun{pcty_desc;pcty_loc;pcty_attributes}acc->letpcty_desc,acc=self#class_type_descpcty_descaccinletpcty_loc,acc=self#locationpcty_locaccinletpcty_attributes,acc=self#attributespcty_attributesaccin({pcty_desc;pcty_loc;pcty_attributes},acc)methodclass_type_desc:class_type_desc->'acc->class_type_desc*'acc=funxacc->matchxwith|Pcty_constr(a,b)->leta,acc=self#longident_locaaccinletb,acc=self#listself#core_typebaccin(Pcty_constr(a,b),acc)|Pcty_signaturea->leta,acc=self#class_signatureaaccin(Pcty_signaturea,acc)|Pcty_arrow(a,b,c)->leta,acc=self#arg_labelaaccinletb,acc=self#core_typebaccinletc,acc=self#class_typecaccin(Pcty_arrow(a,b,c),acc)|Pcty_extensiona->leta,acc=self#extensionaaccin(Pcty_extensiona,acc)|Pcty_open(a,b)->leta,acc=self#open_descriptionaaccinletb,acc=self#class_typebaccin(Pcty_open(a,b),acc)methodclass_signature:class_signature->'acc->class_signature*'acc=fun{pcsig_self;pcsig_fields}acc->letpcsig_self,acc=self#core_typepcsig_selfaccinletpcsig_fields,acc=self#listself#class_type_fieldpcsig_fieldsaccin({pcsig_self;pcsig_fields},acc)methodclass_type_field:class_type_field->'acc->class_type_field*'acc=fun{pctf_desc;pctf_loc;pctf_attributes}acc->letpctf_desc,acc=self#class_type_field_descpctf_descaccinletpctf_loc,acc=self#locationpctf_locaccinletpctf_attributes,acc=self#attributespctf_attributesaccin({pctf_desc;pctf_loc;pctf_attributes},acc)methodclass_type_field_desc:class_type_field_desc->'acc->class_type_field_desc*'acc=funxacc->matchxwith|Pctf_inherita->leta,acc=self#class_typeaaccin(Pctf_inherita,acc)|Pctf_vala->leta,acc=(fun(a,b,c,d)acc->leta,acc=self#locself#labelaaccinletb,acc=self#mutable_flagbaccinletc,acc=self#virtual_flagcaccinletd,acc=self#core_typedaccin((a,b,c,d),acc))aaccin(Pctf_vala,acc)|Pctf_methoda->leta,acc=(fun(a,b,c,d)acc->leta,acc=self#locself#labelaaccinletb,acc=self#private_flagbaccinletc,acc=self#virtual_flagcaccinletd,acc=self#core_typedaccin((a,b,c,d),acc))aaccin(Pctf_methoda,acc)|Pctf_constrainta->leta,acc=(fun(a,b)acc->leta,acc=self#core_typeaaccinletb,acc=self#core_typebaccin((a,b),acc))aaccin(Pctf_constrainta,acc)|Pctf_attributea->leta,acc=self#attributeaaccin(Pctf_attributea,acc)|Pctf_extensiona->leta,acc=self#extensionaaccin(Pctf_extensiona,acc)methodclass_infos:'a.('a->'acc->'a*'acc)->'aclass_infos->'acc->'aclass_infos*'acc=fun_a{pci_virt;pci_params;pci_name;pci_expr;pci_loc;pci_attributes}acc->letpci_virt,acc=self#virtual_flagpci_virtaccinletpci_params,acc=self#list(fun(a,b)acc->leta,acc=self#core_typeaaccinletb,acc=(fun(a,b)acc->leta,acc=self#varianceaaccinletb,acc=self#injectivitybaccin((a,b),acc))baccin((a,b),acc))pci_paramsaccinletpci_name,acc=self#locself#stringpci_nameaccinletpci_expr,acc=_apci_expraccinletpci_loc,acc=self#locationpci_locaccinletpci_attributes,acc=self#attributespci_attributesaccin({pci_virt;pci_params;pci_name;pci_expr;pci_loc;pci_attributes},acc)methodclass_description:class_description->'acc->class_description*'acc=self#class_infosself#class_typemethodclass_type_declaration:class_type_declaration->'acc->class_type_declaration*'acc=self#class_infosself#class_typemethodclass_expr:class_expr->'acc->class_expr*'acc=fun{pcl_desc;pcl_loc;pcl_attributes}acc->letpcl_desc,acc=self#class_expr_descpcl_descaccinletpcl_loc,acc=self#locationpcl_locaccinletpcl_attributes,acc=self#attributespcl_attributesaccin({pcl_desc;pcl_loc;pcl_attributes},acc)methodclass_expr_desc:class_expr_desc->'acc->class_expr_desc*'acc=funxacc->matchxwith|Pcl_constr(a,b)->leta,acc=self#longident_locaaccinletb,acc=self#listself#core_typebaccin(Pcl_constr(a,b),acc)|Pcl_structurea->leta,acc=self#class_structureaaccin(Pcl_structurea,acc)|Pcl_fun(a,b,c,d)->leta,acc=self#arg_labelaaccinletb,acc=self#optionself#expressionbaccinletc,acc=self#patterncaccinletd,acc=self#class_exprdaccin(Pcl_fun(a,b,c,d),acc)|Pcl_apply(a,b)->leta,acc=self#class_expraaccinletb,acc=self#list(fun(a,b)acc->leta,acc=self#arg_labelaaccinletb,acc=self#expressionbaccin((a,b),acc))baccin(Pcl_apply(a,b),acc)|Pcl_let(a,b,c)->leta,acc=self#rec_flagaaccinletb,acc=self#listself#value_bindingbaccinletc,acc=self#class_exprcaccin(Pcl_let(a,b,c),acc)|Pcl_constraint(a,b)->leta,acc=self#class_expraaccinletb,acc=self#class_typebaccin(Pcl_constraint(a,b),acc)|Pcl_extensiona->leta,acc=self#extensionaaccin(Pcl_extensiona,acc)|Pcl_open(a,b)->leta,acc=self#open_descriptionaaccinletb,acc=self#class_exprbaccin(Pcl_open(a,b),acc)methodclass_structure:class_structure->'acc->class_structure*'acc=fun{pcstr_self;pcstr_fields}acc->letpcstr_self,acc=self#patternpcstr_selfaccinletpcstr_fields,acc=self#listself#class_fieldpcstr_fieldsaccin({pcstr_self;pcstr_fields},acc)methodclass_field:class_field->'acc->class_field*'acc=fun{pcf_desc;pcf_loc;pcf_attributes}acc->letpcf_desc,acc=self#class_field_descpcf_descaccinletpcf_loc,acc=self#locationpcf_locaccinletpcf_attributes,acc=self#attributespcf_attributesaccin({pcf_desc;pcf_loc;pcf_attributes},acc)methodclass_field_desc:class_field_desc->'acc->class_field_desc*'acc=funxacc->matchxwith|Pcf_inherit(a,b,c)->leta,acc=self#override_flagaaccinletb,acc=self#class_exprbaccinletc,acc=self#option(self#locself#string)caccin(Pcf_inherit(a,b,c),acc)|Pcf_vala->leta,acc=(fun(a,b,c)acc->leta,acc=self#locself#labelaaccinletb,acc=self#mutable_flagbaccinletc,acc=self#class_field_kindcaccin((a,b,c),acc))aaccin(Pcf_vala,acc)|Pcf_methoda->leta,acc=(fun(a,b,c)acc->leta,acc=self#locself#labelaaccinletb,acc=self#private_flagbaccinletc,acc=self#class_field_kindcaccin((a,b,c),acc))aaccin(Pcf_methoda,acc)|Pcf_constrainta->leta,acc=(fun(a,b)acc->leta,acc=self#core_typeaaccinletb,acc=self#core_typebaccin((a,b),acc))aaccin(Pcf_constrainta,acc)|Pcf_initializera->leta,acc=self#expressionaaccin(Pcf_initializera,acc)|Pcf_attributea->leta,acc=self#attributeaaccin(Pcf_attributea,acc)|Pcf_extensiona->leta,acc=self#extensionaaccin(Pcf_extensiona,acc)methodclass_field_kind:class_field_kind->'acc->class_field_kind*'acc=funxacc->matchxwith|Cfk_virtuala->leta,acc=self#core_typeaaccin(Cfk_virtuala,acc)|Cfk_concrete(a,b)->leta,acc=self#override_flagaaccinletb,acc=self#expressionbaccin(Cfk_concrete(a,b),acc)methodclass_declaration:class_declaration->'acc->class_declaration*'acc=self#class_infosself#class_exprmethodmodule_type:module_type->'acc->module_type*'acc=fun{pmty_desc;pmty_loc;pmty_attributes}acc->letpmty_desc,acc=self#module_type_descpmty_descaccinletpmty_loc,acc=self#locationpmty_locaccinletpmty_attributes,acc=self#attributespmty_attributesaccin({pmty_desc;pmty_loc;pmty_attributes},acc)methodmodule_type_desc:module_type_desc->'acc->module_type_desc*'acc=funxacc->matchxwith|Pmty_identa->leta,acc=self#longident_locaaccin(Pmty_identa,acc)|Pmty_signaturea->leta,acc=self#signatureaaccin(Pmty_signaturea,acc)|Pmty_functor(a,b)->leta,acc=self#functor_parameteraaccinletb,acc=self#module_typebaccin(Pmty_functor(a,b),acc)|Pmty_with(a,b)->leta,acc=self#module_typeaaccinletb,acc=self#listself#with_constraintbaccin(Pmty_with(a,b),acc)|Pmty_typeofa->leta,acc=self#module_expraaccin(Pmty_typeofa,acc)|Pmty_extensiona->leta,acc=self#extensionaaccin(Pmty_extensiona,acc)|Pmty_aliasa->leta,acc=self#longident_locaaccin(Pmty_aliasa,acc)methodfunctor_parameter:functor_parameter->'acc->functor_parameter*'acc=funxacc->matchxwith|Unit->(Unit,acc)|Named(a,b)->leta,acc=self#loc(self#optionself#string)aaccinletb,acc=self#module_typebaccin(Named(a,b),acc)methodsignature:signature->'acc->signature*'acc=self#listself#signature_itemmethodsignature_item:signature_item->'acc->signature_item*'acc=fun{psig_desc;psig_loc}acc->letpsig_desc,acc=self#signature_item_descpsig_descaccinletpsig_loc,acc=self#locationpsig_locaccin({psig_desc;psig_loc},acc)methodsignature_item_desc:signature_item_desc->'acc->signature_item_desc*'acc=funxacc->matchxwith|Psig_valuea->leta,acc=self#value_descriptionaaccin(Psig_valuea,acc)|Psig_type(a,b)->leta,acc=self#rec_flagaaccinletb,acc=self#listself#type_declarationbaccin(Psig_type(a,b),acc)|Psig_typesubsta->leta,acc=self#listself#type_declarationaaccin(Psig_typesubsta,acc)|Psig_typexta->leta,acc=self#type_extensionaaccin(Psig_typexta,acc)|Psig_exceptiona->leta,acc=self#type_exceptionaaccin(Psig_exceptiona,acc)|Psig_modulea->leta,acc=self#module_declarationaaccin(Psig_modulea,acc)|Psig_modsubsta->leta,acc=self#module_substitutionaaccin(Psig_modsubsta,acc)|Psig_recmodulea->leta,acc=self#listself#module_declarationaaccin(Psig_recmodulea,acc)|Psig_modtypea->leta,acc=self#module_type_declarationaaccin(Psig_modtypea,acc)|Psig_modtypesubsta->leta,acc=self#module_type_declarationaaccin(Psig_modtypesubsta,acc)|Psig_opena->leta,acc=self#open_descriptionaaccin(Psig_opena,acc)|Psig_includea->leta,acc=self#include_descriptionaaccin(Psig_includea,acc)|Psig_classa->leta,acc=self#listself#class_descriptionaaccin(Psig_classa,acc)|Psig_class_typea->leta,acc=self#listself#class_type_declarationaaccin(Psig_class_typea,acc)|Psig_attributea->leta,acc=self#attributeaaccin(Psig_attributea,acc)|Psig_extension(a,b)->leta,acc=self#extensionaaccinletb,acc=self#attributesbaccin(Psig_extension(a,b),acc)methodmodule_declaration:module_declaration->'acc->module_declaration*'acc=fun{pmd_name;pmd_type;pmd_attributes;pmd_loc}acc->letpmd_name,acc=self#loc(self#optionself#string)pmd_nameaccinletpmd_type,acc=self#module_typepmd_typeaccinletpmd_attributes,acc=self#attributespmd_attributesaccinletpmd_loc,acc=self#locationpmd_locaccin({pmd_name;pmd_type;pmd_attributes;pmd_loc},acc)methodmodule_substitution:module_substitution->'acc->module_substitution*'acc=fun{pms_name;pms_manifest;pms_attributes;pms_loc}acc->letpms_name,acc=self#locself#stringpms_nameaccinletpms_manifest,acc=self#longident_locpms_manifestaccinletpms_attributes,acc=self#attributespms_attributesaccinletpms_loc,acc=self#locationpms_locaccin({pms_name;pms_manifest;pms_attributes;pms_loc},acc)methodmodule_type_declaration:module_type_declaration->'acc->module_type_declaration*'acc=fun{pmtd_name;pmtd_type;pmtd_attributes;pmtd_loc}acc->letpmtd_name,acc=self#locself#stringpmtd_nameaccinletpmtd_type,acc=self#optionself#module_typepmtd_typeaccinletpmtd_attributes,acc=self#attributespmtd_attributesaccinletpmtd_loc,acc=self#locationpmtd_locaccin({pmtd_name;pmtd_type;pmtd_attributes;pmtd_loc},acc)methodopen_infos:'a.('a->'acc->'a*'acc)->'aopen_infos->'acc->'aopen_infos*'acc=fun_a{popen_expr;popen_override;popen_loc;popen_attributes}acc->letpopen_expr,acc=_apopen_expraccinletpopen_override,acc=self#override_flagpopen_overrideaccinletpopen_loc,acc=self#locationpopen_locaccinletpopen_attributes,acc=self#attributespopen_attributesaccin({popen_expr;popen_override;popen_loc;popen_attributes},acc)methodopen_description:open_description->'acc->open_description*'acc=self#open_infosself#longident_locmethodopen_declaration:open_declaration->'acc->open_declaration*'acc=self#open_infosself#module_exprmethodinclude_infos:'a.('a->'acc->'a*'acc)->'ainclude_infos->'acc->'ainclude_infos*'acc=fun_a{pincl_mod;pincl_loc;pincl_attributes}acc->letpincl_mod,acc=_apincl_modaccinletpincl_loc,acc=self#locationpincl_locaccinletpincl_attributes,acc=self#attributespincl_attributesaccin({pincl_mod;pincl_loc;pincl_attributes},acc)methodinclude_description:include_description->'acc->include_description*'acc=self#include_infosself#module_typemethodinclude_declaration:include_declaration->'acc->include_declaration*'acc=self#include_infosself#module_exprmethodwith_constraint:with_constraint->'acc->with_constraint*'acc=funxacc->matchxwith|Pwith_type(a,b)->leta,acc=self#longident_locaaccinletb,acc=self#type_declarationbaccin(Pwith_type(a,b),acc)|Pwith_module(a,b)->leta,acc=self#longident_locaaccinletb,acc=self#longident_locbaccin(Pwith_module(a,b),acc)|Pwith_modtype(a,b)->leta,acc=self#longident_locaaccinletb,acc=self#module_typebaccin(Pwith_modtype(a,b),acc)|Pwith_modtypesubst(a,b)->leta,acc=self#longident_locaaccinletb,acc=self#module_typebaccin(Pwith_modtypesubst(a,b),acc)|Pwith_typesubst(a,b)->leta,acc=self#longident_locaaccinletb,acc=self#type_declarationbaccin(Pwith_typesubst(a,b),acc)|Pwith_modsubst(a,b)->leta,acc=self#longident_locaaccinletb,acc=self#longident_locbaccin(Pwith_modsubst(a,b),acc)methodmodule_expr:module_expr->'acc->module_expr*'acc=fun{pmod_desc;pmod_loc;pmod_attributes}acc->letpmod_desc,acc=self#module_expr_descpmod_descaccinletpmod_loc,acc=self#locationpmod_locaccinletpmod_attributes,acc=self#attributespmod_attributesaccin({pmod_desc;pmod_loc;pmod_attributes},acc)methodmodule_expr_desc:module_expr_desc->'acc->module_expr_desc*'acc=funxacc->matchxwith|Pmod_identa->leta,acc=self#longident_locaaccin(Pmod_identa,acc)|Pmod_structurea->leta,acc=self#structureaaccin(Pmod_structurea,acc)|Pmod_functor(a,b)->leta,acc=self#functor_parameteraaccinletb,acc=self#module_exprbaccin(Pmod_functor(a,b),acc)|Pmod_apply(a,b)->leta,acc=self#module_expraaccinletb,acc=self#module_exprbaccin(Pmod_apply(a,b),acc)|Pmod_apply_unita->leta,acc=self#module_expraaccin(Pmod_apply_unita,acc)|Pmod_constraint(a,b)->leta,acc=self#module_expraaccinletb,acc=self#module_typebaccin(Pmod_constraint(a,b),acc)|Pmod_unpacka->leta,acc=self#expressionaaccin(Pmod_unpacka,acc)|Pmod_extensiona->leta,acc=self#extensionaaccin(Pmod_extensiona,acc)methodstructure:structure->'acc->structure*'acc=self#listself#structure_itemmethodstructure_item:structure_item->'acc->structure_item*'acc=fun{pstr_desc;pstr_loc}acc->letpstr_desc,acc=self#structure_item_descpstr_descaccinletpstr_loc,acc=self#locationpstr_locaccin({pstr_desc;pstr_loc},acc)methodstructure_item_desc:structure_item_desc->'acc->structure_item_desc*'acc=funxacc->matchxwith|Pstr_eval(a,b)->leta,acc=self#expressionaaccinletb,acc=self#attributesbaccin(Pstr_eval(a,b),acc)|Pstr_value(a,b)->leta,acc=self#rec_flagaaccinletb,acc=self#listself#value_bindingbaccin(Pstr_value(a,b),acc)|Pstr_primitivea->leta,acc=self#value_descriptionaaccin(Pstr_primitivea,acc)|Pstr_type(a,b)->leta,acc=self#rec_flagaaccinletb,acc=self#listself#type_declarationbaccin(Pstr_type(a,b),acc)|Pstr_typexta->leta,acc=self#type_extensionaaccin(Pstr_typexta,acc)|Pstr_exceptiona->leta,acc=self#type_exceptionaaccin(Pstr_exceptiona,acc)|Pstr_modulea->leta,acc=self#module_bindingaaccin(Pstr_modulea,acc)|Pstr_recmodulea->leta,acc=self#listself#module_bindingaaccin(Pstr_recmodulea,acc)|Pstr_modtypea->leta,acc=self#module_type_declarationaaccin(Pstr_modtypea,acc)|Pstr_opena->leta,acc=self#open_declarationaaccin(Pstr_opena,acc)|Pstr_classa->leta,acc=self#listself#class_declarationaaccin(Pstr_classa,acc)|Pstr_class_typea->leta,acc=self#listself#class_type_declarationaaccin(Pstr_class_typea,acc)|Pstr_includea->leta,acc=self#include_declarationaaccin(Pstr_includea,acc)|Pstr_attributea->leta,acc=self#attributeaaccin(Pstr_attributea,acc)|Pstr_extension(a,b)->leta,acc=self#extensionaaccinletb,acc=self#attributesbaccin(Pstr_extension(a,b),acc)methodvalue_constraint:value_constraint->'acc->value_constraint*'acc=funxacc->matchxwith|Pvc_constraint{locally_abstract_univars;typ}->letlocally_abstract_univars,acc=self#list(self#locself#string)locally_abstract_univarsaccinlettyp,acc=self#core_typetypaccin(Pvc_constraint{locally_abstract_univars;typ},acc)|Pvc_coercion{ground;coercion}->letground,acc=self#optionself#core_typegroundaccinletcoercion,acc=self#core_typecoercionaccin(Pvc_coercion{ground;coercion},acc)methodvalue_binding:value_binding->'acc->value_binding*'acc=fun{pvb_pat;pvb_expr;pvb_constraint;pvb_attributes;pvb_loc}acc->letpvb_pat,acc=self#patternpvb_pataccinletpvb_expr,acc=self#expressionpvb_expraccinletpvb_constraint,acc=self#optionself#value_constraintpvb_constraintaccinletpvb_attributes,acc=self#attributespvb_attributesaccinletpvb_loc,acc=self#locationpvb_locaccin({pvb_pat;pvb_expr;pvb_constraint;pvb_attributes;pvb_loc},acc)methodmodule_binding:module_binding->'acc->module_binding*'acc=fun{pmb_name;pmb_expr;pmb_attributes;pmb_loc}acc->letpmb_name,acc=self#loc(self#optionself#string)pmb_nameaccinletpmb_expr,acc=self#module_exprpmb_expraccinletpmb_attributes,acc=self#attributespmb_attributesaccinletpmb_loc,acc=self#locationpmb_locaccin({pmb_name;pmb_expr;pmb_attributes;pmb_loc},acc)methodtoplevel_phrase:toplevel_phrase->'acc->toplevel_phrase*'acc=funxacc->matchxwith|Ptop_defa->leta,acc=self#structureaaccin(Ptop_defa,acc)|Ptop_dira->leta,acc=self#toplevel_directiveaaccin(Ptop_dira,acc)methodtoplevel_directive:toplevel_directive->'acc->toplevel_directive*'acc=fun{pdir_name;pdir_arg;pdir_loc}acc->letpdir_name,acc=self#locself#stringpdir_nameaccinletpdir_arg,acc=self#optionself#directive_argumentpdir_argaccinletpdir_loc,acc=self#locationpdir_locaccin({pdir_name;pdir_arg;pdir_loc},acc)methoddirective_argument:directive_argument->'acc->directive_argument*'acc=fun{pdira_desc;pdira_loc}acc->letpdira_desc,acc=self#directive_argument_descpdira_descaccinletpdira_loc,acc=self#locationpdira_locaccin({pdira_desc;pdira_loc},acc)methoddirective_argument_desc:directive_argument_desc->'acc->directive_argument_desc*'acc=funxacc->matchxwith|Pdir_stringa->leta,acc=self#stringaaccin(Pdir_stringa,acc)|Pdir_int(a,b)->leta,acc=self#stringaaccinletb,acc=self#optionself#charbaccin(Pdir_int(a,b),acc)|Pdir_identa->leta,acc=self#longidentaaccin(Pdir_identa,acc)|Pdir_boola->leta,acc=self#boolaaccin(Pdir_boola,acc)methodcases:cases->'acc->cases*'acc=self#listself#caseendclassvirtual['ctx]map_with_context=object(self)methodvirtualbool:'ctx->bool->boolmethodvirtualchar:'ctx->char->charmethodvirtualint:'ctx->int->intmethodvirtuallist:'a.('ctx->'a->'a)->'ctx->'alist->'alistmethodvirtualoption:'a.('ctx->'a->'a)->'ctx->'aoption->'aoptionmethodvirtualstring:'ctx->string->stringmethodposition:'ctx->position->position=functx{pos_fname;pos_lnum;pos_bol;pos_cnum}->letpos_fname=self#stringctxpos_fnameinletpos_lnum=self#intctxpos_lnuminletpos_bol=self#intctxpos_bolinletpos_cnum=self#intctxpos_cnumin{pos_fname;pos_lnum;pos_bol;pos_cnum}methodlocation:'ctx->location->location=functx{loc_start;loc_end;loc_ghost}->letloc_start=self#positionctxloc_startinletloc_end=self#positionctxloc_endinletloc_ghost=self#boolctxloc_ghostin{loc_start;loc_end;loc_ghost}methodlocation_stack:'ctx->location_stack->location_stack=self#listself#locationmethodloc:'a.('ctx->'a->'a)->'ctx->'aloc->'aloc=fun_actx{txt;loc}->lettxt=_actxtxtinletloc=self#locationctxlocin{txt;loc}methodlongident:'ctx->longident->longident=functxx->matchxwith|Lidenta->leta=self#stringctxainLidenta|Ldot(a,b)->leta=self#longidentctxainletb=self#stringctxbinLdot(a,b)|Lapply(a,b)->leta=self#longidentctxainletb=self#longidentctxbinLapply(a,b)methodlongident_loc:'ctx->longident_loc->longident_loc=self#locself#longidentmethodrec_flag:'ctx->rec_flag->rec_flag=fun_ctxx->xmethoddirection_flag:'ctx->direction_flag->direction_flag=fun_ctxx->xmethodprivate_flag:'ctx->private_flag->private_flag=fun_ctxx->xmethodmutable_flag:'ctx->mutable_flag->mutable_flag=fun_ctxx->xmethodvirtual_flag:'ctx->virtual_flag->virtual_flag=fun_ctxx->xmethodoverride_flag:'ctx->override_flag->override_flag=fun_ctxx->xmethodclosed_flag:'ctx->closed_flag->closed_flag=fun_ctxx->xmethodlabel:'ctx->label->label=self#stringmethodarg_label:'ctx->arg_label->arg_label=functxx->matchxwith|Nolabel->Nolabel|Labelleda->leta=self#stringctxainLabelleda|Optionala->leta=self#stringctxainOptionalamethodvariance:'ctx->variance->variance=fun_ctxx->xmethodinjectivity:'ctx->injectivity->injectivity=fun_ctxx->xmethodconstant:'ctx->constant->constant=functxx->matchxwith|Pconst_integer(a,b)->leta=self#stringctxainletb=self#optionself#charctxbinPconst_integer(a,b)|Pconst_chara->leta=self#charctxainPconst_chara|Pconst_string(a,b,c)->leta=self#stringctxainletb=self#locationctxbinletc=self#optionself#stringctxcinPconst_string(a,b,c)|Pconst_float(a,b)->leta=self#stringctxainletb=self#optionself#charctxbinPconst_float(a,b)methodattribute:'ctx->attribute->attribute=functx{attr_name;attr_payload;attr_loc}->letattr_name=self#locself#stringctxattr_nameinletattr_payload=self#payloadctxattr_payloadinletattr_loc=self#locationctxattr_locin{attr_name;attr_payload;attr_loc}methodextension:'ctx->extension->extension=functx(a,b)->leta=self#locself#stringctxainletb=self#payloadctxbin(a,b)methodattributes:'ctx->attributes->attributes=self#listself#attributemethodpayload:'ctx->payload->payload=functxx->matchxwith|PStra->leta=self#structurectxainPStra|PSiga->leta=self#signaturectxainPSiga|PTypa->leta=self#core_typectxainPTypa|PPat(a,b)->leta=self#patternctxainletb=self#optionself#expressionctxbinPPat(a,b)methodcore_type:'ctx->core_type->core_type=functx{ptyp_desc;ptyp_loc;ptyp_loc_stack;ptyp_attributes}->letptyp_desc=self#core_type_descctxptyp_descinletptyp_loc=self#locationctxptyp_locinletptyp_loc_stack=self#location_stackctxptyp_loc_stackinletptyp_attributes=self#attributesctxptyp_attributesin{ptyp_desc;ptyp_loc;ptyp_loc_stack;ptyp_attributes}methodcore_type_desc:'ctx->core_type_desc->core_type_desc=functxx->matchxwith|Ptyp_any->Ptyp_any|Ptyp_vara->leta=self#stringctxainPtyp_vara|Ptyp_arrow(a,b,c)->leta=self#arg_labelctxainletb=self#core_typectxbinletc=self#core_typectxcinPtyp_arrow(a,b,c)|Ptyp_tuplea->leta=self#listself#core_typectxainPtyp_tuplea|Ptyp_constr(a,b)->leta=self#longident_locctxainletb=self#listself#core_typectxbinPtyp_constr(a,b)|Ptyp_object(a,b)->leta=self#listself#object_fieldctxainletb=self#closed_flagctxbinPtyp_object(a,b)|Ptyp_class(a,b)->leta=self#longident_locctxainletb=self#listself#core_typectxbinPtyp_class(a,b)|Ptyp_alias(a,b)->leta=self#core_typectxainletb=self#locself#stringctxbinPtyp_alias(a,b)|Ptyp_variant(a,b,c)->leta=self#listself#row_fieldctxainletb=self#closed_flagctxbinletc=self#option(self#listself#label)ctxcinPtyp_variant(a,b,c)|Ptyp_poly(a,b)->leta=self#list(self#locself#string)ctxainletb=self#core_typectxbinPtyp_poly(a,b)|Ptyp_packagea->leta=self#package_typectxainPtyp_packagea|Ptyp_open(a,b)->leta=self#longident_locctxainletb=self#core_typectxbinPtyp_open(a,b)|Ptyp_extensiona->leta=self#extensionctxainPtyp_extensionamethodpackage_type:'ctx->package_type->package_type=functx(a,b)->leta=self#longident_locctxainletb=self#list(functx(a,b)->leta=self#longident_locctxainletb=self#core_typectxbin(a,b))ctxbin(a,b)methodrow_field:'ctx->row_field->row_field=functx{prf_desc;prf_loc;prf_attributes}->letprf_desc=self#row_field_descctxprf_descinletprf_loc=self#locationctxprf_locinletprf_attributes=self#attributesctxprf_attributesin{prf_desc;prf_loc;prf_attributes}methodrow_field_desc:'ctx->row_field_desc->row_field_desc=functxx->matchxwith|Rtag(a,b,c)->leta=self#locself#labelctxainletb=self#boolctxbinletc=self#listself#core_typectxcinRtag(a,b,c)|Rinherita->leta=self#core_typectxainRinheritamethodobject_field:'ctx->object_field->object_field=functx{pof_desc;pof_loc;pof_attributes}->letpof_desc=self#object_field_descctxpof_descinletpof_loc=self#locationctxpof_locinletpof_attributes=self#attributesctxpof_attributesin{pof_desc;pof_loc;pof_attributes}methodobject_field_desc:'ctx->object_field_desc->object_field_desc=functxx->matchxwith|Otag(a,b)->leta=self#locself#labelctxainletb=self#core_typectxbinOtag(a,b)|Oinherita->leta=self#core_typectxainOinheritamethodpattern:'ctx->pattern->pattern=functx{ppat_desc;ppat_loc;ppat_loc_stack;ppat_attributes}->letppat_desc=self#pattern_descctxppat_descinletppat_loc=self#locationctxppat_locinletppat_loc_stack=self#location_stackctxppat_loc_stackinletppat_attributes=self#attributesctxppat_attributesin{ppat_desc;ppat_loc;ppat_loc_stack;ppat_attributes}methodpattern_desc:'ctx->pattern_desc->pattern_desc=functxx->matchxwith|Ppat_any->Ppat_any|Ppat_vara->leta=self#locself#stringctxainPpat_vara|Ppat_alias(a,b)->leta=self#patternctxainletb=self#locself#stringctxbinPpat_alias(a,b)|Ppat_constanta->leta=self#constantctxainPpat_constanta|Ppat_interval(a,b)->leta=self#constantctxainletb=self#constantctxbinPpat_interval(a,b)|Ppat_tuplea->leta=self#listself#patternctxainPpat_tuplea|Ppat_construct(a,b)->leta=self#longident_locctxainletb=self#option(functx(a,b)->leta=self#list(self#locself#string)ctxainletb=self#patternctxbin(a,b))ctxbinPpat_construct(a,b)|Ppat_variant(a,b)->leta=self#labelctxainletb=self#optionself#patternctxbinPpat_variant(a,b)|Ppat_record(a,b)->leta=self#list(functx(a,b)->leta=self#longident_locctxainletb=self#patternctxbin(a,b))ctxainletb=self#closed_flagctxbinPpat_record(a,b)|Ppat_arraya->leta=self#listself#patternctxainPpat_arraya|Ppat_or(a,b)->leta=self#patternctxainletb=self#patternctxbinPpat_or(a,b)|Ppat_constraint(a,b)->leta=self#patternctxainletb=self#core_typectxbinPpat_constraint(a,b)|Ppat_typea->leta=self#longident_locctxainPpat_typea|Ppat_lazya->leta=self#patternctxainPpat_lazya|Ppat_unpacka->leta=self#loc(self#optionself#string)ctxainPpat_unpacka|Ppat_exceptiona->leta=self#patternctxainPpat_exceptiona|Ppat_extensiona->leta=self#extensionctxainPpat_extensiona|Ppat_open(a,b)->leta=self#longident_locctxainletb=self#patternctxbinPpat_open(a,b)methodexpression:'ctx->expression->expression=functx{pexp_desc;pexp_loc;pexp_loc_stack;pexp_attributes}->letpexp_desc=self#expression_descctxpexp_descinletpexp_loc=self#locationctxpexp_locinletpexp_loc_stack=self#location_stackctxpexp_loc_stackinletpexp_attributes=self#attributesctxpexp_attributesin{pexp_desc;pexp_loc;pexp_loc_stack;pexp_attributes}methodexpression_desc:'ctx->expression_desc->expression_desc=functxx->matchxwith|Pexp_identa->leta=self#longident_locctxainPexp_identa|Pexp_constanta->leta=self#constantctxainPexp_constanta|Pexp_let(a,b,c)->leta=self#rec_flagctxainletb=self#listself#value_bindingctxbinletc=self#expressionctxcinPexp_let(a,b,c)|Pexp_function(a,b,c)->leta=self#listself#function_paramctxainletb=self#optionself#type_constraintctxbinletc=self#function_bodyctxcinPexp_function(a,b,c)|Pexp_apply(a,b)->leta=self#expressionctxainletb=self#list(functx(a,b)->leta=self#arg_labelctxainletb=self#expressionctxbin(a,b))ctxbinPexp_apply(a,b)|Pexp_match(a,b)->leta=self#expressionctxainletb=self#casesctxbinPexp_match(a,b)|Pexp_try(a,b)->leta=self#expressionctxainletb=self#casesctxbinPexp_try(a,b)|Pexp_tuplea->leta=self#listself#expressionctxainPexp_tuplea|Pexp_construct(a,b)->leta=self#longident_locctxainletb=self#optionself#expressionctxbinPexp_construct(a,b)|Pexp_variant(a,b)->leta=self#labelctxainletb=self#optionself#expressionctxbinPexp_variant(a,b)|Pexp_record(a,b)->leta=self#list(functx(a,b)->leta=self#longident_locctxainletb=self#expressionctxbin(a,b))ctxainletb=self#optionself#expressionctxbinPexp_record(a,b)|Pexp_field(a,b)->leta=self#expressionctxainletb=self#longident_locctxbinPexp_field(a,b)|Pexp_setfield(a,b,c)->leta=self#expressionctxainletb=self#longident_locctxbinletc=self#expressionctxcinPexp_setfield(a,b,c)|Pexp_arraya->leta=self#listself#expressionctxainPexp_arraya|Pexp_ifthenelse(a,b,c)->leta=self#expressionctxainletb=self#expressionctxbinletc=self#optionself#expressionctxcinPexp_ifthenelse(a,b,c)|Pexp_sequence(a,b)->leta=self#expressionctxainletb=self#expressionctxbinPexp_sequence(a,b)|Pexp_while(a,b)->leta=self#expressionctxainletb=self#expressionctxbinPexp_while(a,b)|Pexp_for(a,b,c,d,e)->leta=self#patternctxainletb=self#expressionctxbinletc=self#expressionctxcinletd=self#direction_flagctxdinlete=self#expressionctxeinPexp_for(a,b,c,d,e)|Pexp_constraint(a,b)->leta=self#expressionctxainletb=self#core_typectxbinPexp_constraint(a,b)|Pexp_coerce(a,b,c)->leta=self#expressionctxainletb=self#optionself#core_typectxbinletc=self#core_typectxcinPexp_coerce(a,b,c)|Pexp_send(a,b)->leta=self#expressionctxainletb=self#locself#labelctxbinPexp_send(a,b)|Pexp_newa->leta=self#longident_locctxainPexp_newa|Pexp_setinstvar(a,b)->leta=self#locself#labelctxainletb=self#expressionctxbinPexp_setinstvar(a,b)|Pexp_overridea->leta=self#list(functx(a,b)->leta=self#locself#labelctxainletb=self#expressionctxbin(a,b))ctxainPexp_overridea|Pexp_letmodule(a,b,c)->leta=self#loc(self#optionself#string)ctxainletb=self#module_exprctxbinletc=self#expressionctxcinPexp_letmodule(a,b,c)|Pexp_letexception(a,b)->leta=self#extension_constructorctxainletb=self#expressionctxbinPexp_letexception(a,b)|Pexp_asserta->leta=self#expressionctxainPexp_asserta|Pexp_lazya->leta=self#expressionctxainPexp_lazya|Pexp_poly(a,b)->leta=self#expressionctxainletb=self#optionself#core_typectxbinPexp_poly(a,b)|Pexp_objecta->leta=self#class_structurectxainPexp_objecta|Pexp_newtype(a,b)->leta=self#locself#stringctxainletb=self#expressionctxbinPexp_newtype(a,b)|Pexp_packa->leta=self#module_exprctxainPexp_packa|Pexp_open(a,b)->leta=self#open_declarationctxainletb=self#expressionctxbinPexp_open(a,b)|Pexp_letopa->leta=self#letopctxainPexp_letopa|Pexp_extensiona->leta=self#extensionctxainPexp_extensiona|Pexp_unreachable->Pexp_unreachablemethodcase:'ctx->case->case=functx{pc_lhs;pc_guard;pc_rhs}->letpc_lhs=self#patternctxpc_lhsinletpc_guard=self#optionself#expressionctxpc_guardinletpc_rhs=self#expressionctxpc_rhsin{pc_lhs;pc_guard;pc_rhs}methodletop:'ctx->letop->letop=functx{let_;ands;body}->letlet_=self#binding_opctxlet_inletands=self#listself#binding_opctxandsinletbody=self#expressionctxbodyin{let_;ands;body}methodbinding_op:'ctx->binding_op->binding_op=functx{pbop_op;pbop_pat;pbop_exp;pbop_loc}->letpbop_op=self#locself#stringctxpbop_opinletpbop_pat=self#patternctxpbop_patinletpbop_exp=self#expressionctxpbop_expinletpbop_loc=self#locationctxpbop_locin{pbop_op;pbop_pat;pbop_exp;pbop_loc}methodfunction_param_desc:'ctx->function_param_desc->function_param_desc=functxx->matchxwith|Pparam_val(a,b,c)->leta=self#arg_labelctxainletb=self#optionself#expressionctxbinletc=self#patternctxcinPparam_val(a,b,c)|Pparam_newtypea->leta=self#locself#stringctxainPparam_newtypeamethodfunction_param:'ctx->function_param->function_param=functx{pparam_loc;pparam_desc}->letpparam_loc=self#locationctxpparam_locinletpparam_desc=self#function_param_descctxpparam_descin{pparam_loc;pparam_desc}methodfunction_body:'ctx->function_body->function_body=functxx->matchxwith|Pfunction_bodya->leta=self#expressionctxainPfunction_bodya|Pfunction_cases(a,b,c)->leta=self#casesctxainletb=self#locationctxbinletc=self#attributesctxcinPfunction_cases(a,b,c)methodtype_constraint:'ctx->type_constraint->type_constraint=functxx->matchxwith|Pconstrainta->leta=self#core_typectxainPconstrainta|Pcoerce(a,b)->leta=self#optionself#core_typectxainletb=self#core_typectxbinPcoerce(a,b)methodvalue_description:'ctx->value_description->value_description=functx{pval_name;pval_type;pval_prim;pval_attributes;pval_loc}->letpval_name=self#locself#stringctxpval_nameinletpval_type=self#core_typectxpval_typeinletpval_prim=self#listself#stringctxpval_priminletpval_attributes=self#attributesctxpval_attributesinletpval_loc=self#locationctxpval_locin{pval_name;pval_type;pval_prim;pval_attributes;pval_loc}methodtype_declaration:'ctx->type_declaration->type_declaration=functx{ptype_name;ptype_params;ptype_cstrs;ptype_kind;ptype_private;ptype_manifest;ptype_attributes;ptype_loc;}->letptype_name=self#locself#stringctxptype_nameinletptype_params=self#list(functx(a,b)->leta=self#core_typectxainletb=(functx(a,b)->leta=self#variancectxainletb=self#injectivityctxbin(a,b))ctxbin(a,b))ctxptype_paramsinletptype_cstrs=self#list(functx(a,b,c)->leta=self#core_typectxainletb=self#core_typectxbinletc=self#locationctxcin(a,b,c))ctxptype_cstrsinletptype_kind=self#type_kindctxptype_kindinletptype_private=self#private_flagctxptype_privateinletptype_manifest=self#optionself#core_typectxptype_manifestinletptype_attributes=self#attributesctxptype_attributesinletptype_loc=self#locationctxptype_locin{ptype_name;ptype_params;ptype_cstrs;ptype_kind;ptype_private;ptype_manifest;ptype_attributes;ptype_loc;}methodtype_kind:'ctx->type_kind->type_kind=functxx->matchxwith|Ptype_abstract->Ptype_abstract|Ptype_varianta->leta=self#listself#constructor_declarationctxainPtype_varianta|Ptype_recorda->leta=self#listself#label_declarationctxainPtype_recorda|Ptype_open->Ptype_openmethodlabel_declaration:'ctx->label_declaration->label_declaration=functx{pld_name;pld_mutable;pld_type;pld_loc;pld_attributes}->letpld_name=self#locself#stringctxpld_nameinletpld_mutable=self#mutable_flagctxpld_mutableinletpld_type=self#core_typectxpld_typeinletpld_loc=self#locationctxpld_locinletpld_attributes=self#attributesctxpld_attributesin{pld_name;pld_mutable;pld_type;pld_loc;pld_attributes}methodconstructor_declaration:'ctx->constructor_declaration->constructor_declaration=functx{pcd_name;pcd_vars;pcd_args;pcd_res;pcd_loc;pcd_attributes}->letpcd_name=self#locself#stringctxpcd_nameinletpcd_vars=self#list(self#locself#string)ctxpcd_varsinletpcd_args=self#constructor_argumentsctxpcd_argsinletpcd_res=self#optionself#core_typectxpcd_resinletpcd_loc=self#locationctxpcd_locinletpcd_attributes=self#attributesctxpcd_attributesin{pcd_name;pcd_vars;pcd_args;pcd_res;pcd_loc;pcd_attributes}methodconstructor_arguments:'ctx->constructor_arguments->constructor_arguments=functxx->matchxwith|Pcstr_tuplea->leta=self#listself#core_typectxainPcstr_tuplea|Pcstr_recorda->leta=self#listself#label_declarationctxainPcstr_recordamethodtype_extension:'ctx->type_extension->type_extension=functx{ptyext_path;ptyext_params;ptyext_constructors;ptyext_private;ptyext_loc;ptyext_attributes;}->letptyext_path=self#longident_locctxptyext_pathinletptyext_params=self#list(functx(a,b)->leta=self#core_typectxainletb=(functx(a,b)->leta=self#variancectxainletb=self#injectivityctxbin(a,b))ctxbin(a,b))ctxptyext_paramsinletptyext_constructors=self#listself#extension_constructorctxptyext_constructorsinletptyext_private=self#private_flagctxptyext_privateinletptyext_loc=self#locationctxptyext_locinletptyext_attributes=self#attributesctxptyext_attributesin{ptyext_path;ptyext_params;ptyext_constructors;ptyext_private;ptyext_loc;ptyext_attributes;}methodextension_constructor:'ctx->extension_constructor->extension_constructor=functx{pext_name;pext_kind;pext_loc;pext_attributes}->letpext_name=self#locself#stringctxpext_nameinletpext_kind=self#extension_constructor_kindctxpext_kindinletpext_loc=self#locationctxpext_locinletpext_attributes=self#attributesctxpext_attributesin{pext_name;pext_kind;pext_loc;pext_attributes}methodtype_exception:'ctx->type_exception->type_exception=functx{ptyexn_constructor;ptyexn_loc;ptyexn_attributes}->letptyexn_constructor=self#extension_constructorctxptyexn_constructorinletptyexn_loc=self#locationctxptyexn_locinletptyexn_attributes=self#attributesctxptyexn_attributesin{ptyexn_constructor;ptyexn_loc;ptyexn_attributes}methodextension_constructor_kind:'ctx->extension_constructor_kind->extension_constructor_kind=functxx->matchxwith|Pext_decl(a,b,c)->leta=self#list(self#locself#string)ctxainletb=self#constructor_argumentsctxbinletc=self#optionself#core_typectxcinPext_decl(a,b,c)|Pext_rebinda->leta=self#longident_locctxainPext_rebindamethodclass_type:'ctx->class_type->class_type=functx{pcty_desc;pcty_loc;pcty_attributes}->letpcty_desc=self#class_type_descctxpcty_descinletpcty_loc=self#locationctxpcty_locinletpcty_attributes=self#attributesctxpcty_attributesin{pcty_desc;pcty_loc;pcty_attributes}methodclass_type_desc:'ctx->class_type_desc->class_type_desc=functxx->matchxwith|Pcty_constr(a,b)->leta=self#longident_locctxainletb=self#listself#core_typectxbinPcty_constr(a,b)|Pcty_signaturea->leta=self#class_signaturectxainPcty_signaturea|Pcty_arrow(a,b,c)->leta=self#arg_labelctxainletb=self#core_typectxbinletc=self#class_typectxcinPcty_arrow(a,b,c)|Pcty_extensiona->leta=self#extensionctxainPcty_extensiona|Pcty_open(a,b)->leta=self#open_descriptionctxainletb=self#class_typectxbinPcty_open(a,b)methodclass_signature:'ctx->class_signature->class_signature=functx{pcsig_self;pcsig_fields}->letpcsig_self=self#core_typectxpcsig_selfinletpcsig_fields=self#listself#class_type_fieldctxpcsig_fieldsin{pcsig_self;pcsig_fields}methodclass_type_field:'ctx->class_type_field->class_type_field=functx{pctf_desc;pctf_loc;pctf_attributes}->letpctf_desc=self#class_type_field_descctxpctf_descinletpctf_loc=self#locationctxpctf_locinletpctf_attributes=self#attributesctxpctf_attributesin{pctf_desc;pctf_loc;pctf_attributes}methodclass_type_field_desc:'ctx->class_type_field_desc->class_type_field_desc=functxx->matchxwith|Pctf_inherita->leta=self#class_typectxainPctf_inherita|Pctf_vala->leta=(functx(a,b,c,d)->leta=self#locself#labelctxainletb=self#mutable_flagctxbinletc=self#virtual_flagctxcinletd=self#core_typectxdin(a,b,c,d))ctxainPctf_vala|Pctf_methoda->leta=(functx(a,b,c,d)->leta=self#locself#labelctxainletb=self#private_flagctxbinletc=self#virtual_flagctxcinletd=self#core_typectxdin(a,b,c,d))ctxainPctf_methoda|Pctf_constrainta->leta=(functx(a,b)->leta=self#core_typectxainletb=self#core_typectxbin(a,b))ctxainPctf_constrainta|Pctf_attributea->leta=self#attributectxainPctf_attributea|Pctf_extensiona->leta=self#extensionctxainPctf_extensionamethodclass_infos:'a.('ctx->'a->'a)->'ctx->'aclass_infos->'aclass_infos=fun_actx{pci_virt;pci_params;pci_name;pci_expr;pci_loc;pci_attributes}->letpci_virt=self#virtual_flagctxpci_virtinletpci_params=self#list(functx(a,b)->leta=self#core_typectxainletb=(functx(a,b)->leta=self#variancectxainletb=self#injectivityctxbin(a,b))ctxbin(a,b))ctxpci_paramsinletpci_name=self#locself#stringctxpci_nameinletpci_expr=_actxpci_exprinletpci_loc=self#locationctxpci_locinletpci_attributes=self#attributesctxpci_attributesin{pci_virt;pci_params;pci_name;pci_expr;pci_loc;pci_attributes}methodclass_description:'ctx->class_description->class_description=self#class_infosself#class_typemethodclass_type_declaration:'ctx->class_type_declaration->class_type_declaration=self#class_infosself#class_typemethodclass_expr:'ctx->class_expr->class_expr=functx{pcl_desc;pcl_loc;pcl_attributes}->letpcl_desc=self#class_expr_descctxpcl_descinletpcl_loc=self#locationctxpcl_locinletpcl_attributes=self#attributesctxpcl_attributesin{pcl_desc;pcl_loc;pcl_attributes}methodclass_expr_desc:'ctx->class_expr_desc->class_expr_desc=functxx->matchxwith|Pcl_constr(a,b)->leta=self#longident_locctxainletb=self#listself#core_typectxbinPcl_constr(a,b)|Pcl_structurea->leta=self#class_structurectxainPcl_structurea|Pcl_fun(a,b,c,d)->leta=self#arg_labelctxainletb=self#optionself#expressionctxbinletc=self#patternctxcinletd=self#class_exprctxdinPcl_fun(a,b,c,d)|Pcl_apply(a,b)->leta=self#class_exprctxainletb=self#list(functx(a,b)->leta=self#arg_labelctxainletb=self#expressionctxbin(a,b))ctxbinPcl_apply(a,b)|Pcl_let(a,b,c)->leta=self#rec_flagctxainletb=self#listself#value_bindingctxbinletc=self#class_exprctxcinPcl_let(a,b,c)|Pcl_constraint(a,b)->leta=self#class_exprctxainletb=self#class_typectxbinPcl_constraint(a,b)|Pcl_extensiona->leta=self#extensionctxainPcl_extensiona|Pcl_open(a,b)->leta=self#open_descriptionctxainletb=self#class_exprctxbinPcl_open(a,b)methodclass_structure:'ctx->class_structure->class_structure=functx{pcstr_self;pcstr_fields}->letpcstr_self=self#patternctxpcstr_selfinletpcstr_fields=self#listself#class_fieldctxpcstr_fieldsin{pcstr_self;pcstr_fields}methodclass_field:'ctx->class_field->class_field=functx{pcf_desc;pcf_loc;pcf_attributes}->letpcf_desc=self#class_field_descctxpcf_descinletpcf_loc=self#locationctxpcf_locinletpcf_attributes=self#attributesctxpcf_attributesin{pcf_desc;pcf_loc;pcf_attributes}methodclass_field_desc:'ctx->class_field_desc->class_field_desc=functxx->matchxwith|Pcf_inherit(a,b,c)->leta=self#override_flagctxainletb=self#class_exprctxbinletc=self#option(self#locself#string)ctxcinPcf_inherit(a,b,c)|Pcf_vala->leta=(functx(a,b,c)->leta=self#locself#labelctxainletb=self#mutable_flagctxbinletc=self#class_field_kindctxcin(a,b,c))ctxainPcf_vala|Pcf_methoda->leta=(functx(a,b,c)->leta=self#locself#labelctxainletb=self#private_flagctxbinletc=self#class_field_kindctxcin(a,b,c))ctxainPcf_methoda|Pcf_constrainta->leta=(functx(a,b)->leta=self#core_typectxainletb=self#core_typectxbin(a,b))ctxainPcf_constrainta|Pcf_initializera->leta=self#expressionctxainPcf_initializera|Pcf_attributea->leta=self#attributectxainPcf_attributea|Pcf_extensiona->leta=self#extensionctxainPcf_extensionamethodclass_field_kind:'ctx->class_field_kind->class_field_kind=functxx->matchxwith|Cfk_virtuala->leta=self#core_typectxainCfk_virtuala|Cfk_concrete(a,b)->leta=self#override_flagctxainletb=self#expressionctxbinCfk_concrete(a,b)methodclass_declaration:'ctx->class_declaration->class_declaration=self#class_infosself#class_exprmethodmodule_type:'ctx->module_type->module_type=functx{pmty_desc;pmty_loc;pmty_attributes}->letpmty_desc=self#module_type_descctxpmty_descinletpmty_loc=self#locationctxpmty_locinletpmty_attributes=self#attributesctxpmty_attributesin{pmty_desc;pmty_loc;pmty_attributes}methodmodule_type_desc:'ctx->module_type_desc->module_type_desc=functxx->matchxwith|Pmty_identa->leta=self#longident_locctxainPmty_identa|Pmty_signaturea->leta=self#signaturectxainPmty_signaturea|Pmty_functor(a,b)->leta=self#functor_parameterctxainletb=self#module_typectxbinPmty_functor(a,b)|Pmty_with(a,b)->leta=self#module_typectxainletb=self#listself#with_constraintctxbinPmty_with(a,b)|Pmty_typeofa->leta=self#module_exprctxainPmty_typeofa|Pmty_extensiona->leta=self#extensionctxainPmty_extensiona|Pmty_aliasa->leta=self#longident_locctxainPmty_aliasamethodfunctor_parameter:'ctx->functor_parameter->functor_parameter=functxx->matchxwith|Unit->Unit|Named(a,b)->leta=self#loc(self#optionself#string)ctxainletb=self#module_typectxbinNamed(a,b)methodsignature:'ctx->signature->signature=self#listself#signature_itemmethodsignature_item:'ctx->signature_item->signature_item=functx{psig_desc;psig_loc}->letpsig_desc=self#signature_item_descctxpsig_descinletpsig_loc=self#locationctxpsig_locin{psig_desc;psig_loc}methodsignature_item_desc:'ctx->signature_item_desc->signature_item_desc=functxx->matchxwith|Psig_valuea->leta=self#value_descriptionctxainPsig_valuea|Psig_type(a,b)->leta=self#rec_flagctxainletb=self#listself#type_declarationctxbinPsig_type(a,b)|Psig_typesubsta->leta=self#listself#type_declarationctxainPsig_typesubsta|Psig_typexta->leta=self#type_extensionctxainPsig_typexta|Psig_exceptiona->leta=self#type_exceptionctxainPsig_exceptiona|Psig_modulea->leta=self#module_declarationctxainPsig_modulea|Psig_modsubsta->leta=self#module_substitutionctxainPsig_modsubsta|Psig_recmodulea->leta=self#listself#module_declarationctxainPsig_recmodulea|Psig_modtypea->leta=self#module_type_declarationctxainPsig_modtypea|Psig_modtypesubsta->leta=self#module_type_declarationctxainPsig_modtypesubsta|Psig_opena->leta=self#open_descriptionctxainPsig_opena|Psig_includea->leta=self#include_descriptionctxainPsig_includea|Psig_classa->leta=self#listself#class_descriptionctxainPsig_classa|Psig_class_typea->leta=self#listself#class_type_declarationctxainPsig_class_typea|Psig_attributea->leta=self#attributectxainPsig_attributea|Psig_extension(a,b)->leta=self#extensionctxainletb=self#attributesctxbinPsig_extension(a,b)methodmodule_declaration:'ctx->module_declaration->module_declaration=functx{pmd_name;pmd_type;pmd_attributes;pmd_loc}->letpmd_name=self#loc(self#optionself#string)ctxpmd_nameinletpmd_type=self#module_typectxpmd_typeinletpmd_attributes=self#attributesctxpmd_attributesinletpmd_loc=self#locationctxpmd_locin{pmd_name;pmd_type;pmd_attributes;pmd_loc}methodmodule_substitution:'ctx->module_substitution->module_substitution=functx{pms_name;pms_manifest;pms_attributes;pms_loc}->letpms_name=self#locself#stringctxpms_nameinletpms_manifest=self#longident_locctxpms_manifestinletpms_attributes=self#attributesctxpms_attributesinletpms_loc=self#locationctxpms_locin{pms_name;pms_manifest;pms_attributes;pms_loc}methodmodule_type_declaration:'ctx->module_type_declaration->module_type_declaration=functx{pmtd_name;pmtd_type;pmtd_attributes;pmtd_loc}->letpmtd_name=self#locself#stringctxpmtd_nameinletpmtd_type=self#optionself#module_typectxpmtd_typeinletpmtd_attributes=self#attributesctxpmtd_attributesinletpmtd_loc=self#locationctxpmtd_locin{pmtd_name;pmtd_type;pmtd_attributes;pmtd_loc}methodopen_infos:'a.('ctx->'a->'a)->'ctx->'aopen_infos->'aopen_infos=fun_actx{popen_expr;popen_override;popen_loc;popen_attributes}->letpopen_expr=_actxpopen_exprinletpopen_override=self#override_flagctxpopen_overrideinletpopen_loc=self#locationctxpopen_locinletpopen_attributes=self#attributesctxpopen_attributesin{popen_expr;popen_override;popen_loc;popen_attributes}methodopen_description:'ctx->open_description->open_description=self#open_infosself#longident_locmethodopen_declaration:'ctx->open_declaration->open_declaration=self#open_infosself#module_exprmethodinclude_infos:'a.('ctx->'a->'a)->'ctx->'ainclude_infos->'ainclude_infos=fun_actx{pincl_mod;pincl_loc;pincl_attributes}->letpincl_mod=_actxpincl_modinletpincl_loc=self#locationctxpincl_locinletpincl_attributes=self#attributesctxpincl_attributesin{pincl_mod;pincl_loc;pincl_attributes}methodinclude_description:'ctx->include_description->include_description=self#include_infosself#module_typemethodinclude_declaration:'ctx->include_declaration->include_declaration=self#include_infosself#module_exprmethodwith_constraint:'ctx->with_constraint->with_constraint=functxx->matchxwith|Pwith_type(a,b)->leta=self#longident_locctxainletb=self#type_declarationctxbinPwith_type(a,b)|Pwith_module(a,b)->leta=self#longident_locctxainletb=self#longident_locctxbinPwith_module(a,b)|Pwith_modtype(a,b)->leta=self#longident_locctxainletb=self#module_typectxbinPwith_modtype(a,b)|Pwith_modtypesubst(a,b)->leta=self#longident_locctxainletb=self#module_typectxbinPwith_modtypesubst(a,b)|Pwith_typesubst(a,b)->leta=self#longident_locctxainletb=self#type_declarationctxbinPwith_typesubst(a,b)|Pwith_modsubst(a,b)->leta=self#longident_locctxainletb=self#longident_locctxbinPwith_modsubst(a,b)methodmodule_expr:'ctx->module_expr->module_expr=functx{pmod_desc;pmod_loc;pmod_attributes}->letpmod_desc=self#module_expr_descctxpmod_descinletpmod_loc=self#locationctxpmod_locinletpmod_attributes=self#attributesctxpmod_attributesin{pmod_desc;pmod_loc;pmod_attributes}methodmodule_expr_desc:'ctx->module_expr_desc->module_expr_desc=functxx->matchxwith|Pmod_identa->leta=self#longident_locctxainPmod_identa|Pmod_structurea->leta=self#structurectxainPmod_structurea|Pmod_functor(a,b)->leta=self#functor_parameterctxainletb=self#module_exprctxbinPmod_functor(a,b)|Pmod_apply(a,b)->leta=self#module_exprctxainletb=self#module_exprctxbinPmod_apply(a,b)|Pmod_apply_unita->leta=self#module_exprctxainPmod_apply_unita|Pmod_constraint(a,b)->leta=self#module_exprctxainletb=self#module_typectxbinPmod_constraint(a,b)|Pmod_unpacka->leta=self#expressionctxainPmod_unpacka|Pmod_extensiona->leta=self#extensionctxainPmod_extensionamethodstructure:'ctx->structure->structure=self#listself#structure_itemmethodstructure_item:'ctx->structure_item->structure_item=functx{pstr_desc;pstr_loc}->letpstr_desc=self#structure_item_descctxpstr_descinletpstr_loc=self#locationctxpstr_locin{pstr_desc;pstr_loc}methodstructure_item_desc:'ctx->structure_item_desc->structure_item_desc=functxx->matchxwith|Pstr_eval(a,b)->leta=self#expressionctxainletb=self#attributesctxbinPstr_eval(a,b)|Pstr_value(a,b)->leta=self#rec_flagctxainletb=self#listself#value_bindingctxbinPstr_value(a,b)|Pstr_primitivea->leta=self#value_descriptionctxainPstr_primitivea|Pstr_type(a,b)->leta=self#rec_flagctxainletb=self#listself#type_declarationctxbinPstr_type(a,b)|Pstr_typexta->leta=self#type_extensionctxainPstr_typexta|Pstr_exceptiona->leta=self#type_exceptionctxainPstr_exceptiona|Pstr_modulea->leta=self#module_bindingctxainPstr_modulea|Pstr_recmodulea->leta=self#listself#module_bindingctxainPstr_recmodulea|Pstr_modtypea->leta=self#module_type_declarationctxainPstr_modtypea|Pstr_opena->leta=self#open_declarationctxainPstr_opena|Pstr_classa->leta=self#listself#class_declarationctxainPstr_classa|Pstr_class_typea->leta=self#listself#class_type_declarationctxainPstr_class_typea|Pstr_includea->leta=self#include_declarationctxainPstr_includea|Pstr_attributea->leta=self#attributectxainPstr_attributea|Pstr_extension(a,b)->leta=self#extensionctxainletb=self#attributesctxbinPstr_extension(a,b)methodvalue_constraint:'ctx->value_constraint->value_constraint=functxx->matchxwith|Pvc_constraint{locally_abstract_univars;typ}->letlocally_abstract_univars=self#list(self#locself#string)ctxlocally_abstract_univarsinlettyp=self#core_typectxtypinPvc_constraint{locally_abstract_univars;typ}|Pvc_coercion{ground;coercion}->letground=self#optionself#core_typectxgroundinletcoercion=self#core_typectxcoercioninPvc_coercion{ground;coercion}methodvalue_binding:'ctx->value_binding->value_binding=functx{pvb_pat;pvb_expr;pvb_constraint;pvb_attributes;pvb_loc}->letpvb_pat=self#patternctxpvb_patinletpvb_expr=self#expressionctxpvb_exprinletpvb_constraint=self#optionself#value_constraintctxpvb_constraintinletpvb_attributes=self#attributesctxpvb_attributesinletpvb_loc=self#locationctxpvb_locin{pvb_pat;pvb_expr;pvb_constraint;pvb_attributes;pvb_loc}methodmodule_binding:'ctx->module_binding->module_binding=functx{pmb_name;pmb_expr;pmb_attributes;pmb_loc}->letpmb_name=self#loc(self#optionself#string)ctxpmb_nameinletpmb_expr=self#module_exprctxpmb_exprinletpmb_attributes=self#attributesctxpmb_attributesinletpmb_loc=self#locationctxpmb_locin{pmb_name;pmb_expr;pmb_attributes;pmb_loc}methodtoplevel_phrase:'ctx->toplevel_phrase->toplevel_phrase=functxx->matchxwith|Ptop_defa->leta=self#structurectxainPtop_defa|Ptop_dira->leta=self#toplevel_directivectxainPtop_diramethodtoplevel_directive:'ctx->toplevel_directive->toplevel_directive=functx{pdir_name;pdir_arg;pdir_loc}->letpdir_name=self#locself#stringctxpdir_nameinletpdir_arg=self#optionself#directive_argumentctxpdir_arginletpdir_loc=self#locationctxpdir_locin{pdir_name;pdir_arg;pdir_loc}methoddirective_argument:'ctx->directive_argument->directive_argument=functx{pdira_desc;pdira_loc}->letpdira_desc=self#directive_argument_descctxpdira_descinletpdira_loc=self#locationctxpdira_locin{pdira_desc;pdira_loc}methoddirective_argument_desc:'ctx->directive_argument_desc->directive_argument_desc=functxx->matchxwith|Pdir_stringa->leta=self#stringctxainPdir_stringa|Pdir_int(a,b)->leta=self#stringctxainletb=self#optionself#charctxbinPdir_int(a,b)|Pdir_identa->leta=self#longidentctxainPdir_identa|Pdir_boola->leta=self#boolctxainPdir_boolamethodcases:'ctx->cases->cases=self#listself#caseendclassvirtual['res]lift=object(self)methodvirtualrecord:(string*'res)list->'resmethodvirtualconstr:string->'reslist->'resmethodvirtualtuple:'reslist->'resmethodvirtualbool:bool->'resmethodvirtualchar:char->'resmethodvirtualint:int->'resmethodvirtuallist:'a.('a->'res)->'alist->'resmethodvirtualoption:'a.('a->'res)->'aoption->'resmethodvirtualstring:string->'resmethodposition:position->'res=fun{pos_fname;pos_lnum;pos_bol;pos_cnum}->letpos_fname=self#stringpos_fnameinletpos_lnum=self#intpos_lnuminletpos_bol=self#intpos_bolinletpos_cnum=self#intpos_cnuminself#record[("pos_fname",pos_fname);("pos_lnum",pos_lnum);("pos_bol",pos_bol);("pos_cnum",pos_cnum);]methodlocation:location->'res=fun{loc_start;loc_end;loc_ghost}->letloc_start=self#positionloc_startinletloc_end=self#positionloc_endinletloc_ghost=self#boolloc_ghostinself#record[("loc_start",loc_start);("loc_end",loc_end);("loc_ghost",loc_ghost);]methodlocation_stack:location_stack->'res=self#listself#locationmethodloc:'a.('a->'res)->'aloc->'res=fun_a{txt;loc}->lettxt=_atxtinletloc=self#locationlocinself#record[("txt",txt);("loc",loc)]methodlongident:longident->'res=funx->matchxwith|Lidenta->leta=self#stringainself#constr"Lident"[a]|Ldot(a,b)->leta=self#longidentainletb=self#stringbinself#constr"Ldot"[a;b]|Lapply(a,b)->leta=self#longidentainletb=self#longidentbinself#constr"Lapply"[a;b]methodlongident_loc:longident_loc->'res=self#locself#longidentmethodrec_flag:rec_flag->'res=funx->matchxwith|Nonrecursive->self#constr"Nonrecursive"[]|Recursive->self#constr"Recursive"[]methoddirection_flag:direction_flag->'res=funx->matchxwith|Upto->self#constr"Upto"[]|Downto->self#constr"Downto"[]methodprivate_flag:private_flag->'res=funx->matchxwith|Private->self#constr"Private"[]|Public->self#constr"Public"[]methodmutable_flag:mutable_flag->'res=funx->matchxwith|Immutable->self#constr"Immutable"[]|Mutable->self#constr"Mutable"[]methodvirtual_flag:virtual_flag->'res=funx->matchxwith|Virtual->self#constr"Virtual"[]|Concrete->self#constr"Concrete"[]methodoverride_flag:override_flag->'res=funx->matchxwith|Override->self#constr"Override"[]|Fresh->self#constr"Fresh"[]methodclosed_flag:closed_flag->'res=funx->matchxwith|Closed->self#constr"Closed"[]|Open->self#constr"Open"[]methodlabel:label->'res=self#stringmethodarg_label:arg_label->'res=funx->matchxwith|Nolabel->self#constr"Nolabel"[]|Labelleda->leta=self#stringainself#constr"Labelled"[a]|Optionala->leta=self#stringainself#constr"Optional"[a]methodvariance:variance->'res=funx->matchxwith|Covariant->self#constr"Covariant"[]|Contravariant->self#constr"Contravariant"[]|NoVariance->self#constr"NoVariance"[]methodinjectivity:injectivity->'res=funx->matchxwith|Injective->self#constr"Injective"[]|NoInjectivity->self#constr"NoInjectivity"[]methodconstant:constant->'res=funx->matchxwith|Pconst_integer(a,b)->leta=self#stringainletb=self#optionself#charbinself#constr"Pconst_integer"[a;b]|Pconst_chara->leta=self#charainself#constr"Pconst_char"[a]|Pconst_string(a,b,c)->leta=self#stringainletb=self#locationbinletc=self#optionself#stringcinself#constr"Pconst_string"[a;b;c]|Pconst_float(a,b)->leta=self#stringainletb=self#optionself#charbinself#constr"Pconst_float"[a;b]methodattribute:attribute->'res=fun{attr_name;attr_payload;attr_loc}->letattr_name=self#locself#stringattr_nameinletattr_payload=self#payloadattr_payloadinletattr_loc=self#locationattr_locinself#record[("attr_name",attr_name);("attr_payload",attr_payload);("attr_loc",attr_loc);]methodextension:extension->'res=fun(a,b)->leta=self#locself#stringainletb=self#payloadbinself#tuple[a;b]methodattributes:attributes->'res=self#listself#attributemethodpayload:payload->'res=funx->matchxwith|PStra->leta=self#structureainself#constr"PStr"[a]|PSiga->leta=self#signatureainself#constr"PSig"[a]|PTypa->leta=self#core_typeainself#constr"PTyp"[a]|PPat(a,b)->leta=self#patternainletb=self#optionself#expressionbinself#constr"PPat"[a;b]methodcore_type:core_type->'res=fun{ptyp_desc;ptyp_loc;ptyp_loc_stack;ptyp_attributes}->letptyp_desc=self#core_type_descptyp_descinletptyp_loc=self#locationptyp_locinletptyp_loc_stack=self#location_stackptyp_loc_stackinletptyp_attributes=self#attributesptyp_attributesinself#record[("ptyp_desc",ptyp_desc);("ptyp_loc",ptyp_loc);("ptyp_loc_stack",ptyp_loc_stack);("ptyp_attributes",ptyp_attributes);]methodcore_type_desc:core_type_desc->'res=funx->matchxwith|Ptyp_any->self#constr"Ptyp_any"[]|Ptyp_vara->leta=self#stringainself#constr"Ptyp_var"[a]|Ptyp_arrow(a,b,c)->leta=self#arg_labelainletb=self#core_typebinletc=self#core_typecinself#constr"Ptyp_arrow"[a;b;c]|Ptyp_tuplea->leta=self#listself#core_typeainself#constr"Ptyp_tuple"[a]|Ptyp_constr(a,b)->leta=self#longident_locainletb=self#listself#core_typebinself#constr"Ptyp_constr"[a;b]|Ptyp_object(a,b)->leta=self#listself#object_fieldainletb=self#closed_flagbinself#constr"Ptyp_object"[a;b]|Ptyp_class(a,b)->leta=self#longident_locainletb=self#listself#core_typebinself#constr"Ptyp_class"[a;b]|Ptyp_alias(a,b)->leta=self#core_typeainletb=self#locself#stringbinself#constr"Ptyp_alias"[a;b]|Ptyp_variant(a,b,c)->leta=self#listself#row_fieldainletb=self#closed_flagbinletc=self#option(self#listself#label)cinself#constr"Ptyp_variant"[a;b;c]|Ptyp_poly(a,b)->leta=self#list(self#locself#string)ainletb=self#core_typebinself#constr"Ptyp_poly"[a;b]|Ptyp_packagea->leta=self#package_typeainself#constr"Ptyp_package"[a]|Ptyp_open(a,b)->leta=self#longident_locainletb=self#core_typebinself#constr"Ptyp_open"[a;b]|Ptyp_extensiona->leta=self#extensionainself#constr"Ptyp_extension"[a]methodpackage_type:package_type->'res=fun(a,b)->leta=self#longident_locainletb=self#list(fun(a,b)->leta=self#longident_locainletb=self#core_typebinself#tuple[a;b])binself#tuple[a;b]methodrow_field:row_field->'res=fun{prf_desc;prf_loc;prf_attributes}->letprf_desc=self#row_field_descprf_descinletprf_loc=self#locationprf_locinletprf_attributes=self#attributesprf_attributesinself#record[("prf_desc",prf_desc);("prf_loc",prf_loc);("prf_attributes",prf_attributes);]methodrow_field_desc:row_field_desc->'res=funx->matchxwith|Rtag(a,b,c)->leta=self#locself#labelainletb=self#boolbinletc=self#listself#core_typecinself#constr"Rtag"[a;b;c]|Rinherita->leta=self#core_typeainself#constr"Rinherit"[a]methodobject_field:object_field->'res=fun{pof_desc;pof_loc;pof_attributes}->letpof_desc=self#object_field_descpof_descinletpof_loc=self#locationpof_locinletpof_attributes=self#attributespof_attributesinself#record[("pof_desc",pof_desc);("pof_loc",pof_loc);("pof_attributes",pof_attributes);]methodobject_field_desc:object_field_desc->'res=funx->matchxwith|Otag(a,b)->leta=self#locself#labelainletb=self#core_typebinself#constr"Otag"[a;b]|Oinherita->leta=self#core_typeainself#constr"Oinherit"[a]methodpattern:pattern->'res=fun{ppat_desc;ppat_loc;ppat_loc_stack;ppat_attributes}->letppat_desc=self#pattern_descppat_descinletppat_loc=self#locationppat_locinletppat_loc_stack=self#location_stackppat_loc_stackinletppat_attributes=self#attributesppat_attributesinself#record[("ppat_desc",ppat_desc);("ppat_loc",ppat_loc);("ppat_loc_stack",ppat_loc_stack);("ppat_attributes",ppat_attributes);]methodpattern_desc:pattern_desc->'res=funx->matchxwith|Ppat_any->self#constr"Ppat_any"[]|Ppat_vara->leta=self#locself#stringainself#constr"Ppat_var"[a]|Ppat_alias(a,b)->leta=self#patternainletb=self#locself#stringbinself#constr"Ppat_alias"[a;b]|Ppat_constanta->leta=self#constantainself#constr"Ppat_constant"[a]|Ppat_interval(a,b)->leta=self#constantainletb=self#constantbinself#constr"Ppat_interval"[a;b]|Ppat_tuplea->leta=self#listself#patternainself#constr"Ppat_tuple"[a]|Ppat_construct(a,b)->leta=self#longident_locainletb=self#option(fun(a,b)->leta=self#list(self#locself#string)ainletb=self#patternbinself#tuple[a;b])binself#constr"Ppat_construct"[a;b]|Ppat_variant(a,b)->leta=self#labelainletb=self#optionself#patternbinself#constr"Ppat_variant"[a;b]|Ppat_record(a,b)->leta=self#list(fun(a,b)->leta=self#longident_locainletb=self#patternbinself#tuple[a;b])ainletb=self#closed_flagbinself#constr"Ppat_record"[a;b]|Ppat_arraya->leta=self#listself#patternainself#constr"Ppat_array"[a]|Ppat_or(a,b)->leta=self#patternainletb=self#patternbinself#constr"Ppat_or"[a;b]|Ppat_constraint(a,b)->leta=self#patternainletb=self#core_typebinself#constr"Ppat_constraint"[a;b]|Ppat_typea->leta=self#longident_locainself#constr"Ppat_type"[a]|Ppat_lazya->leta=self#patternainself#constr"Ppat_lazy"[a]|Ppat_unpacka->leta=self#loc(self#optionself#string)ainself#constr"Ppat_unpack"[a]|Ppat_exceptiona->leta=self#patternainself#constr"Ppat_exception"[a]|Ppat_extensiona->leta=self#extensionainself#constr"Ppat_extension"[a]|Ppat_open(a,b)->leta=self#longident_locainletb=self#patternbinself#constr"Ppat_open"[a;b]methodexpression:expression->'res=fun{pexp_desc;pexp_loc;pexp_loc_stack;pexp_attributes}->letpexp_desc=self#expression_descpexp_descinletpexp_loc=self#locationpexp_locinletpexp_loc_stack=self#location_stackpexp_loc_stackinletpexp_attributes=self#attributespexp_attributesinself#record[("pexp_desc",pexp_desc);("pexp_loc",pexp_loc);("pexp_loc_stack",pexp_loc_stack);("pexp_attributes",pexp_attributes);]methodexpression_desc:expression_desc->'res=funx->matchxwith|Pexp_identa->leta=self#longident_locainself#constr"Pexp_ident"[a]|Pexp_constanta->leta=self#constantainself#constr"Pexp_constant"[a]|Pexp_let(a,b,c)->leta=self#rec_flagainletb=self#listself#value_bindingbinletc=self#expressioncinself#constr"Pexp_let"[a;b;c]|Pexp_function(a,b,c)->leta=self#listself#function_paramainletb=self#optionself#type_constraintbinletc=self#function_bodycinself#constr"Pexp_function"[a;b;c]|Pexp_apply(a,b)->leta=self#expressionainletb=self#list(fun(a,b)->leta=self#arg_labelainletb=self#expressionbinself#tuple[a;b])binself#constr"Pexp_apply"[a;b]|Pexp_match(a,b)->leta=self#expressionainletb=self#casesbinself#constr"Pexp_match"[a;b]|Pexp_try(a,b)->leta=self#expressionainletb=self#casesbinself#constr"Pexp_try"[a;b]|Pexp_tuplea->leta=self#listself#expressionainself#constr"Pexp_tuple"[a]|Pexp_construct(a,b)->leta=self#longident_locainletb=self#optionself#expressionbinself#constr"Pexp_construct"[a;b]|Pexp_variant(a,b)->leta=self#labelainletb=self#optionself#expressionbinself#constr"Pexp_variant"[a;b]|Pexp_record(a,b)->leta=self#list(fun(a,b)->leta=self#longident_locainletb=self#expressionbinself#tuple[a;b])ainletb=self#optionself#expressionbinself#constr"Pexp_record"[a;b]|Pexp_field(a,b)->leta=self#expressionainletb=self#longident_locbinself#constr"Pexp_field"[a;b]|Pexp_setfield(a,b,c)->leta=self#expressionainletb=self#longident_locbinletc=self#expressioncinself#constr"Pexp_setfield"[a;b;c]|Pexp_arraya->leta=self#listself#expressionainself#constr"Pexp_array"[a]|Pexp_ifthenelse(a,b,c)->leta=self#expressionainletb=self#expressionbinletc=self#optionself#expressioncinself#constr"Pexp_ifthenelse"[a;b;c]|Pexp_sequence(a,b)->leta=self#expressionainletb=self#expressionbinself#constr"Pexp_sequence"[a;b]|Pexp_while(a,b)->leta=self#expressionainletb=self#expressionbinself#constr"Pexp_while"[a;b]|Pexp_for(a,b,c,d,e)->leta=self#patternainletb=self#expressionbinletc=self#expressioncinletd=self#direction_flagdinlete=self#expressioneinself#constr"Pexp_for"[a;b;c;d;e]|Pexp_constraint(a,b)->leta=self#expressionainletb=self#core_typebinself#constr"Pexp_constraint"[a;b]|Pexp_coerce(a,b,c)->leta=self#expressionainletb=self#optionself#core_typebinletc=self#core_typecinself#constr"Pexp_coerce"[a;b;c]|Pexp_send(a,b)->leta=self#expressionainletb=self#locself#labelbinself#constr"Pexp_send"[a;b]|Pexp_newa->leta=self#longident_locainself#constr"Pexp_new"[a]|Pexp_setinstvar(a,b)->leta=self#locself#labelainletb=self#expressionbinself#constr"Pexp_setinstvar"[a;b]|Pexp_overridea->leta=self#list(fun(a,b)->leta=self#locself#labelainletb=self#expressionbinself#tuple[a;b])ainself#constr"Pexp_override"[a]|Pexp_letmodule(a,b,c)->leta=self#loc(self#optionself#string)ainletb=self#module_exprbinletc=self#expressioncinself#constr"Pexp_letmodule"[a;b;c]|Pexp_letexception(a,b)->leta=self#extension_constructorainletb=self#expressionbinself#constr"Pexp_letexception"[a;b]|Pexp_asserta->leta=self#expressionainself#constr"Pexp_assert"[a]|Pexp_lazya->leta=self#expressionainself#constr"Pexp_lazy"[a]|Pexp_poly(a,b)->leta=self#expressionainletb=self#optionself#core_typebinself#constr"Pexp_poly"[a;b]|Pexp_objecta->leta=self#class_structureainself#constr"Pexp_object"[a]|Pexp_newtype(a,b)->leta=self#locself#stringainletb=self#expressionbinself#constr"Pexp_newtype"[a;b]|Pexp_packa->leta=self#module_exprainself#constr"Pexp_pack"[a]|Pexp_open(a,b)->leta=self#open_declarationainletb=self#expressionbinself#constr"Pexp_open"[a;b]|Pexp_letopa->leta=self#letopainself#constr"Pexp_letop"[a]|Pexp_extensiona->leta=self#extensionainself#constr"Pexp_extension"[a]|Pexp_unreachable->self#constr"Pexp_unreachable"[]methodcase:case->'res=fun{pc_lhs;pc_guard;pc_rhs}->letpc_lhs=self#patternpc_lhsinletpc_guard=self#optionself#expressionpc_guardinletpc_rhs=self#expressionpc_rhsinself#record[("pc_lhs",pc_lhs);("pc_guard",pc_guard);("pc_rhs",pc_rhs)]methodletop:letop->'res=fun{let_;ands;body}->letlet_=self#binding_oplet_inletands=self#listself#binding_opandsinletbody=self#expressionbodyinself#record[("let_",let_);("ands",ands);("body",body)]methodbinding_op:binding_op->'res=fun{pbop_op;pbop_pat;pbop_exp;pbop_loc}->letpbop_op=self#locself#stringpbop_opinletpbop_pat=self#patternpbop_patinletpbop_exp=self#expressionpbop_expinletpbop_loc=self#locationpbop_locinself#record[("pbop_op",pbop_op);("pbop_pat",pbop_pat);("pbop_exp",pbop_exp);("pbop_loc",pbop_loc);]methodfunction_param_desc:function_param_desc->'res=funx->matchxwith|Pparam_val(a,b,c)->leta=self#arg_labelainletb=self#optionself#expressionbinletc=self#patterncinself#constr"Pparam_val"[a;b;c]|Pparam_newtypea->leta=self#locself#stringainself#constr"Pparam_newtype"[a]methodfunction_param:function_param->'res=fun{pparam_loc;pparam_desc}->letpparam_loc=self#locationpparam_locinletpparam_desc=self#function_param_descpparam_descinself#record[("pparam_loc",pparam_loc);("pparam_desc",pparam_desc)]methodfunction_body:function_body->'res=funx->matchxwith|Pfunction_bodya->leta=self#expressionainself#constr"Pfunction_body"[a]|Pfunction_cases(a,b,c)->leta=self#casesainletb=self#locationbinletc=self#attributescinself#constr"Pfunction_cases"[a;b;c]methodtype_constraint:type_constraint->'res=funx->matchxwith|Pconstrainta->leta=self#core_typeainself#constr"Pconstraint"[a]|Pcoerce(a,b)->leta=self#optionself#core_typeainletb=self#core_typebinself#constr"Pcoerce"[a;b]methodvalue_description:value_description->'res=fun{pval_name;pval_type;pval_prim;pval_attributes;pval_loc}->letpval_name=self#locself#stringpval_nameinletpval_type=self#core_typepval_typeinletpval_prim=self#listself#stringpval_priminletpval_attributes=self#attributespval_attributesinletpval_loc=self#locationpval_locinself#record[("pval_name",pval_name);("pval_type",pval_type);("pval_prim",pval_prim);("pval_attributes",pval_attributes);("pval_loc",pval_loc);]methodtype_declaration:type_declaration->'res=fun{ptype_name;ptype_params;ptype_cstrs;ptype_kind;ptype_private;ptype_manifest;ptype_attributes;ptype_loc;}->letptype_name=self#locself#stringptype_nameinletptype_params=self#list(fun(a,b)->leta=self#core_typeainletb=(fun(a,b)->leta=self#varianceainletb=self#injectivitybinself#tuple[a;b])binself#tuple[a;b])ptype_paramsinletptype_cstrs=self#list(fun(a,b,c)->leta=self#core_typeainletb=self#core_typebinletc=self#locationcinself#tuple[a;b;c])ptype_cstrsinletptype_kind=self#type_kindptype_kindinletptype_private=self#private_flagptype_privateinletptype_manifest=self#optionself#core_typeptype_manifestinletptype_attributes=self#attributesptype_attributesinletptype_loc=self#locationptype_locinself#record[("ptype_name",ptype_name);("ptype_params",ptype_params);("ptype_cstrs",ptype_cstrs);("ptype_kind",ptype_kind);("ptype_private",ptype_private);("ptype_manifest",ptype_manifest);("ptype_attributes",ptype_attributes);("ptype_loc",ptype_loc);]methodtype_kind:type_kind->'res=funx->matchxwith|Ptype_abstract->self#constr"Ptype_abstract"[]|Ptype_varianta->leta=self#listself#constructor_declarationainself#constr"Ptype_variant"[a]|Ptype_recorda->leta=self#listself#label_declarationainself#constr"Ptype_record"[a]|Ptype_open->self#constr"Ptype_open"[]methodlabel_declaration:label_declaration->'res=fun{pld_name;pld_mutable;pld_type;pld_loc;pld_attributes}->letpld_name=self#locself#stringpld_nameinletpld_mutable=self#mutable_flagpld_mutableinletpld_type=self#core_typepld_typeinletpld_loc=self#locationpld_locinletpld_attributes=self#attributespld_attributesinself#record[("pld_name",pld_name);("pld_mutable",pld_mutable);("pld_type",pld_type);("pld_loc",pld_loc);("pld_attributes",pld_attributes);]methodconstructor_declaration:constructor_declaration->'res=fun{pcd_name;pcd_vars;pcd_args;pcd_res;pcd_loc;pcd_attributes}->letpcd_name=self#locself#stringpcd_nameinletpcd_vars=self#list(self#locself#string)pcd_varsinletpcd_args=self#constructor_argumentspcd_argsinletpcd_res=self#optionself#core_typepcd_resinletpcd_loc=self#locationpcd_locinletpcd_attributes=self#attributespcd_attributesinself#record[("pcd_name",pcd_name);("pcd_vars",pcd_vars);("pcd_args",pcd_args);("pcd_res",pcd_res);("pcd_loc",pcd_loc);("pcd_attributes",pcd_attributes);]methodconstructor_arguments:constructor_arguments->'res=funx->matchxwith|Pcstr_tuplea->leta=self#listself#core_typeainself#constr"Pcstr_tuple"[a]|Pcstr_recorda->leta=self#listself#label_declarationainself#constr"Pcstr_record"[a]methodtype_extension:type_extension->'res=fun{ptyext_path;ptyext_params;ptyext_constructors;ptyext_private;ptyext_loc;ptyext_attributes;}->letptyext_path=self#longident_locptyext_pathinletptyext_params=self#list(fun(a,b)->leta=self#core_typeainletb=(fun(a,b)->leta=self#varianceainletb=self#injectivitybinself#tuple[a;b])binself#tuple[a;b])ptyext_paramsinletptyext_constructors=self#listself#extension_constructorptyext_constructorsinletptyext_private=self#private_flagptyext_privateinletptyext_loc=self#locationptyext_locinletptyext_attributes=self#attributesptyext_attributesinself#record[("ptyext_path",ptyext_path);("ptyext_params",ptyext_params);("ptyext_constructors",ptyext_constructors);("ptyext_private",ptyext_private);("ptyext_loc",ptyext_loc);("ptyext_attributes",ptyext_attributes);]methodextension_constructor:extension_constructor->'res=fun{pext_name;pext_kind;pext_loc;pext_attributes}->letpext_name=self#locself#stringpext_nameinletpext_kind=self#extension_constructor_kindpext_kindinletpext_loc=self#locationpext_locinletpext_attributes=self#attributespext_attributesinself#record[("pext_name",pext_name);("pext_kind",pext_kind);("pext_loc",pext_loc);("pext_attributes",pext_attributes);]methodtype_exception:type_exception->'res=fun{ptyexn_constructor;ptyexn_loc;ptyexn_attributes}->letptyexn_constructor=self#extension_constructorptyexn_constructorinletptyexn_loc=self#locationptyexn_locinletptyexn_attributes=self#attributesptyexn_attributesinself#record[("ptyexn_constructor",ptyexn_constructor);("ptyexn_loc",ptyexn_loc);("ptyexn_attributes",ptyexn_attributes);]methodextension_constructor_kind:extension_constructor_kind->'res=funx->matchxwith|Pext_decl(a,b,c)->leta=self#list(self#locself#string)ainletb=self#constructor_argumentsbinletc=self#optionself#core_typecinself#constr"Pext_decl"[a;b;c]|Pext_rebinda->leta=self#longident_locainself#constr"Pext_rebind"[a]methodclass_type:class_type->'res=fun{pcty_desc;pcty_loc;pcty_attributes}->letpcty_desc=self#class_type_descpcty_descinletpcty_loc=self#locationpcty_locinletpcty_attributes=self#attributespcty_attributesinself#record[("pcty_desc",pcty_desc);("pcty_loc",pcty_loc);("pcty_attributes",pcty_attributes);]methodclass_type_desc:class_type_desc->'res=funx->matchxwith|Pcty_constr(a,b)->leta=self#longident_locainletb=self#listself#core_typebinself#constr"Pcty_constr"[a;b]|Pcty_signaturea->leta=self#class_signatureainself#constr"Pcty_signature"[a]|Pcty_arrow(a,b,c)->leta=self#arg_labelainletb=self#core_typebinletc=self#class_typecinself#constr"Pcty_arrow"[a;b;c]|Pcty_extensiona->leta=self#extensionainself#constr"Pcty_extension"[a]|Pcty_open(a,b)->leta=self#open_descriptionainletb=self#class_typebinself#constr"Pcty_open"[a;b]methodclass_signature:class_signature->'res=fun{pcsig_self;pcsig_fields}->letpcsig_self=self#core_typepcsig_selfinletpcsig_fields=self#listself#class_type_fieldpcsig_fieldsinself#record[("pcsig_self",pcsig_self);("pcsig_fields",pcsig_fields)]methodclass_type_field:class_type_field->'res=fun{pctf_desc;pctf_loc;pctf_attributes}->letpctf_desc=self#class_type_field_descpctf_descinletpctf_loc=self#locationpctf_locinletpctf_attributes=self#attributespctf_attributesinself#record[("pctf_desc",pctf_desc);("pctf_loc",pctf_loc);("pctf_attributes",pctf_attributes);]methodclass_type_field_desc:class_type_field_desc->'res=funx->matchxwith|Pctf_inherita->leta=self#class_typeainself#constr"Pctf_inherit"[a]|Pctf_vala->leta=(fun(a,b,c,d)->leta=self#locself#labelainletb=self#mutable_flagbinletc=self#virtual_flagcinletd=self#core_typedinself#tuple[a;b;c;d])ainself#constr"Pctf_val"[a]|Pctf_methoda->leta=(fun(a,b,c,d)->leta=self#locself#labelainletb=self#private_flagbinletc=self#virtual_flagcinletd=self#core_typedinself#tuple[a;b;c;d])ainself#constr"Pctf_method"[a]|Pctf_constrainta->leta=(fun(a,b)->leta=self#core_typeainletb=self#core_typebinself#tuple[a;b])ainself#constr"Pctf_constraint"[a]|Pctf_attributea->leta=self#attributeainself#constr"Pctf_attribute"[a]|Pctf_extensiona->leta=self#extensionainself#constr"Pctf_extension"[a]methodclass_infos:'a.('a->'res)->'aclass_infos->'res=fun_a{pci_virt;pci_params;pci_name;pci_expr;pci_loc;pci_attributes}->letpci_virt=self#virtual_flagpci_virtinletpci_params=self#list(fun(a,b)->leta=self#core_typeainletb=(fun(a,b)->leta=self#varianceainletb=self#injectivitybinself#tuple[a;b])binself#tuple[a;b])pci_paramsinletpci_name=self#locself#stringpci_nameinletpci_expr=_apci_exprinletpci_loc=self#locationpci_locinletpci_attributes=self#attributespci_attributesinself#record[("pci_virt",pci_virt);("pci_params",pci_params);("pci_name",pci_name);("pci_expr",pci_expr);("pci_loc",pci_loc);("pci_attributes",pci_attributes);]methodclass_description:class_description->'res=self#class_infosself#class_typemethodclass_type_declaration:class_type_declaration->'res=self#class_infosself#class_typemethodclass_expr:class_expr->'res=fun{pcl_desc;pcl_loc;pcl_attributes}->letpcl_desc=self#class_expr_descpcl_descinletpcl_loc=self#locationpcl_locinletpcl_attributes=self#attributespcl_attributesinself#record[("pcl_desc",pcl_desc);("pcl_loc",pcl_loc);("pcl_attributes",pcl_attributes);]methodclass_expr_desc:class_expr_desc->'res=funx->matchxwith|Pcl_constr(a,b)->leta=self#longident_locainletb=self#listself#core_typebinself#constr"Pcl_constr"[a;b]|Pcl_structurea->leta=self#class_structureainself#constr"Pcl_structure"[a]|Pcl_fun(a,b,c,d)->leta=self#arg_labelainletb=self#optionself#expressionbinletc=self#patterncinletd=self#class_exprdinself#constr"Pcl_fun"[a;b;c;d]|Pcl_apply(a,b)->leta=self#class_exprainletb=self#list(fun(a,b)->leta=self#arg_labelainletb=self#expressionbinself#tuple[a;b])binself#constr"Pcl_apply"[a;b]|Pcl_let(a,b,c)->leta=self#rec_flagainletb=self#listself#value_bindingbinletc=self#class_exprcinself#constr"Pcl_let"[a;b;c]|Pcl_constraint(a,b)->leta=self#class_exprainletb=self#class_typebinself#constr"Pcl_constraint"[a;b]|Pcl_extensiona->leta=self#extensionainself#constr"Pcl_extension"[a]|Pcl_open(a,b)->leta=self#open_descriptionainletb=self#class_exprbinself#constr"Pcl_open"[a;b]methodclass_structure:class_structure->'res=fun{pcstr_self;pcstr_fields}->letpcstr_self=self#patternpcstr_selfinletpcstr_fields=self#listself#class_fieldpcstr_fieldsinself#record[("pcstr_self",pcstr_self);("pcstr_fields",pcstr_fields)]methodclass_field:class_field->'res=fun{pcf_desc;pcf_loc;pcf_attributes}->letpcf_desc=self#class_field_descpcf_descinletpcf_loc=self#locationpcf_locinletpcf_attributes=self#attributespcf_attributesinself#record[("pcf_desc",pcf_desc);("pcf_loc",pcf_loc);("pcf_attributes",pcf_attributes);]methodclass_field_desc:class_field_desc->'res=funx->matchxwith|Pcf_inherit(a,b,c)->leta=self#override_flagainletb=self#class_exprbinletc=self#option(self#locself#string)cinself#constr"Pcf_inherit"[a;b;c]|Pcf_vala->leta=(fun(a,b,c)->leta=self#locself#labelainletb=self#mutable_flagbinletc=self#class_field_kindcinself#tuple[a;b;c])ainself#constr"Pcf_val"[a]|Pcf_methoda->leta=(fun(a,b,c)->leta=self#locself#labelainletb=self#private_flagbinletc=self#class_field_kindcinself#tuple[a;b;c])ainself#constr"Pcf_method"[a]|Pcf_constrainta->leta=(fun(a,b)->leta=self#core_typeainletb=self#core_typebinself#tuple[a;b])ainself#constr"Pcf_constraint"[a]|Pcf_initializera->leta=self#expressionainself#constr"Pcf_initializer"[a]|Pcf_attributea->leta=self#attributeainself#constr"Pcf_attribute"[a]|Pcf_extensiona->leta=self#extensionainself#constr"Pcf_extension"[a]methodclass_field_kind:class_field_kind->'res=funx->matchxwith|Cfk_virtuala->leta=self#core_typeainself#constr"Cfk_virtual"[a]|Cfk_concrete(a,b)->leta=self#override_flagainletb=self#expressionbinself#constr"Cfk_concrete"[a;b]methodclass_declaration:class_declaration->'res=self#class_infosself#class_exprmethodmodule_type:module_type->'res=fun{pmty_desc;pmty_loc;pmty_attributes}->letpmty_desc=self#module_type_descpmty_descinletpmty_loc=self#locationpmty_locinletpmty_attributes=self#attributespmty_attributesinself#record[("pmty_desc",pmty_desc);("pmty_loc",pmty_loc);("pmty_attributes",pmty_attributes);]methodmodule_type_desc:module_type_desc->'res=funx->matchxwith|Pmty_identa->leta=self#longident_locainself#constr"Pmty_ident"[a]|Pmty_signaturea->leta=self#signatureainself#constr"Pmty_signature"[a]|Pmty_functor(a,b)->leta=self#functor_parameterainletb=self#module_typebinself#constr"Pmty_functor"[a;b]|Pmty_with(a,b)->leta=self#module_typeainletb=self#listself#with_constraintbinself#constr"Pmty_with"[a;b]|Pmty_typeofa->leta=self#module_exprainself#constr"Pmty_typeof"[a]|Pmty_extensiona->leta=self#extensionainself#constr"Pmty_extension"[a]|Pmty_aliasa->leta=self#longident_locainself#constr"Pmty_alias"[a]methodfunctor_parameter:functor_parameter->'res=funx->matchxwith|Unit->self#constr"Unit"[]|Named(a,b)->leta=self#loc(self#optionself#string)ainletb=self#module_typebinself#constr"Named"[a;b]methodsignature:signature->'res=self#listself#signature_itemmethodsignature_item:signature_item->'res=fun{psig_desc;psig_loc}->letpsig_desc=self#signature_item_descpsig_descinletpsig_loc=self#locationpsig_locinself#record[("psig_desc",psig_desc);("psig_loc",psig_loc)]methodsignature_item_desc:signature_item_desc->'res=funx->matchxwith|Psig_valuea->leta=self#value_descriptionainself#constr"Psig_value"[a]|Psig_type(a,b)->leta=self#rec_flagainletb=self#listself#type_declarationbinself#constr"Psig_type"[a;b]|Psig_typesubsta->leta=self#listself#type_declarationainself#constr"Psig_typesubst"[a]|Psig_typexta->leta=self#type_extensionainself#constr"Psig_typext"[a]|Psig_exceptiona->leta=self#type_exceptionainself#constr"Psig_exception"[a]|Psig_modulea->leta=self#module_declarationainself#constr"Psig_module"[a]|Psig_modsubsta->leta=self#module_substitutionainself#constr"Psig_modsubst"[a]|Psig_recmodulea->leta=self#listself#module_declarationainself#constr"Psig_recmodule"[a]|Psig_modtypea->leta=self#module_type_declarationainself#constr"Psig_modtype"[a]|Psig_modtypesubsta->leta=self#module_type_declarationainself#constr"Psig_modtypesubst"[a]|Psig_opena->leta=self#open_descriptionainself#constr"Psig_open"[a]|Psig_includea->leta=self#include_descriptionainself#constr"Psig_include"[a]|Psig_classa->leta=self#listself#class_descriptionainself#constr"Psig_class"[a]|Psig_class_typea->leta=self#listself#class_type_declarationainself#constr"Psig_class_type"[a]|Psig_attributea->leta=self#attributeainself#constr"Psig_attribute"[a]|Psig_extension(a,b)->leta=self#extensionainletb=self#attributesbinself#constr"Psig_extension"[a;b]methodmodule_declaration:module_declaration->'res=fun{pmd_name;pmd_type;pmd_attributes;pmd_loc}->letpmd_name=self#loc(self#optionself#string)pmd_nameinletpmd_type=self#module_typepmd_typeinletpmd_attributes=self#attributespmd_attributesinletpmd_loc=self#locationpmd_locinself#record[("pmd_name",pmd_name);("pmd_type",pmd_type);("pmd_attributes",pmd_attributes);("pmd_loc",pmd_loc);]methodmodule_substitution:module_substitution->'res=fun{pms_name;pms_manifest;pms_attributes;pms_loc}->letpms_name=self#locself#stringpms_nameinletpms_manifest=self#longident_locpms_manifestinletpms_attributes=self#attributespms_attributesinletpms_loc=self#locationpms_locinself#record[("pms_name",pms_name);("pms_manifest",pms_manifest);("pms_attributes",pms_attributes);("pms_loc",pms_loc);]methodmodule_type_declaration:module_type_declaration->'res=fun{pmtd_name;pmtd_type;pmtd_attributes;pmtd_loc}->letpmtd_name=self#locself#stringpmtd_nameinletpmtd_type=self#optionself#module_typepmtd_typeinletpmtd_attributes=self#attributespmtd_attributesinletpmtd_loc=self#locationpmtd_locinself#record[("pmtd_name",pmtd_name);("pmtd_type",pmtd_type);("pmtd_attributes",pmtd_attributes);("pmtd_loc",pmtd_loc);]methodopen_infos:'a.('a->'res)->'aopen_infos->'res=fun_a{popen_expr;popen_override;popen_loc;popen_attributes}->letpopen_expr=_apopen_exprinletpopen_override=self#override_flagpopen_overrideinletpopen_loc=self#locationpopen_locinletpopen_attributes=self#attributespopen_attributesinself#record[("popen_expr",popen_expr);("popen_override",popen_override);("popen_loc",popen_loc);("popen_attributes",popen_attributes);]methodopen_description:open_description->'res=self#open_infosself#longident_locmethodopen_declaration:open_declaration->'res=self#open_infosself#module_exprmethodinclude_infos:'a.('a->'res)->'ainclude_infos->'res=fun_a{pincl_mod;pincl_loc;pincl_attributes}->letpincl_mod=_apincl_modinletpincl_loc=self#locationpincl_locinletpincl_attributes=self#attributespincl_attributesinself#record[("pincl_mod",pincl_mod);("pincl_loc",pincl_loc);("pincl_attributes",pincl_attributes);]methodinclude_description:include_description->'res=self#include_infosself#module_typemethodinclude_declaration:include_declaration->'res=self#include_infosself#module_exprmethodwith_constraint:with_constraint->'res=funx->matchxwith|Pwith_type(a,b)->leta=self#longident_locainletb=self#type_declarationbinself#constr"Pwith_type"[a;b]|Pwith_module(a,b)->leta=self#longident_locainletb=self#longident_locbinself#constr"Pwith_module"[a;b]|Pwith_modtype(a,b)->leta=self#longident_locainletb=self#module_typebinself#constr"Pwith_modtype"[a;b]|Pwith_modtypesubst(a,b)->leta=self#longident_locainletb=self#module_typebinself#constr"Pwith_modtypesubst"[a;b]|Pwith_typesubst(a,b)->leta=self#longident_locainletb=self#type_declarationbinself#constr"Pwith_typesubst"[a;b]|Pwith_modsubst(a,b)->leta=self#longident_locainletb=self#longident_locbinself#constr"Pwith_modsubst"[a;b]methodmodule_expr:module_expr->'res=fun{pmod_desc;pmod_loc;pmod_attributes}->letpmod_desc=self#module_expr_descpmod_descinletpmod_loc=self#locationpmod_locinletpmod_attributes=self#attributespmod_attributesinself#record[("pmod_desc",pmod_desc);("pmod_loc",pmod_loc);("pmod_attributes",pmod_attributes);]methodmodule_expr_desc:module_expr_desc->'res=funx->matchxwith|Pmod_identa->leta=self#longident_locainself#constr"Pmod_ident"[a]|Pmod_structurea->leta=self#structureainself#constr"Pmod_structure"[a]|Pmod_functor(a,b)->leta=self#functor_parameterainletb=self#module_exprbinself#constr"Pmod_functor"[a;b]|Pmod_apply(a,b)->leta=self#module_exprainletb=self#module_exprbinself#constr"Pmod_apply"[a;b]|Pmod_apply_unita->leta=self#module_exprainself#constr"Pmod_apply_unit"[a]|Pmod_constraint(a,b)->leta=self#module_exprainletb=self#module_typebinself#constr"Pmod_constraint"[a;b]|Pmod_unpacka->leta=self#expressionainself#constr"Pmod_unpack"[a]|Pmod_extensiona->leta=self#extensionainself#constr"Pmod_extension"[a]methodstructure:structure->'res=self#listself#structure_itemmethodstructure_item:structure_item->'res=fun{pstr_desc;pstr_loc}->letpstr_desc=self#structure_item_descpstr_descinletpstr_loc=self#locationpstr_locinself#record[("pstr_desc",pstr_desc);("pstr_loc",pstr_loc)]methodstructure_item_desc:structure_item_desc->'res=funx->matchxwith|Pstr_eval(a,b)->leta=self#expressionainletb=self#attributesbinself#constr"Pstr_eval"[a;b]|Pstr_value(a,b)->leta=self#rec_flagainletb=self#listself#value_bindingbinself#constr"Pstr_value"[a;b]|Pstr_primitivea->leta=self#value_descriptionainself#constr"Pstr_primitive"[a]|Pstr_type(a,b)->leta=self#rec_flagainletb=self#listself#type_declarationbinself#constr"Pstr_type"[a;b]|Pstr_typexta->leta=self#type_extensionainself#constr"Pstr_typext"[a]|Pstr_exceptiona->leta=self#type_exceptionainself#constr"Pstr_exception"[a]|Pstr_modulea->leta=self#module_bindingainself#constr"Pstr_module"[a]|Pstr_recmodulea->leta=self#listself#module_bindingainself#constr"Pstr_recmodule"[a]|Pstr_modtypea->leta=self#module_type_declarationainself#constr"Pstr_modtype"[a]|Pstr_opena->leta=self#open_declarationainself#constr"Pstr_open"[a]|Pstr_classa->leta=self#listself#class_declarationainself#constr"Pstr_class"[a]|Pstr_class_typea->leta=self#listself#class_type_declarationainself#constr"Pstr_class_type"[a]|Pstr_includea->leta=self#include_declarationainself#constr"Pstr_include"[a]|Pstr_attributea->leta=self#attributeainself#constr"Pstr_attribute"[a]|Pstr_extension(a,b)->leta=self#extensionainletb=self#attributesbinself#constr"Pstr_extension"[a;b]methodvalue_constraint:value_constraint->'res=funx->matchxwith|Pvc_constraint{locally_abstract_univars;typ}->letlocally_abstract_univars=self#list(self#locself#string)locally_abstract_univarsinlettyp=self#core_typetypinself#constr"Pvc_constraint"[self#record[("locally_abstract_univars",locally_abstract_univars);("typ",typ);];]|Pvc_coercion{ground;coercion}->letground=self#optionself#core_typegroundinletcoercion=self#core_typecoercioninself#constr"Pvc_coercion"[self#record[("ground",ground);("coercion",coercion)]]methodvalue_binding:value_binding->'res=fun{pvb_pat;pvb_expr;pvb_constraint;pvb_attributes;pvb_loc}->letpvb_pat=self#patternpvb_patinletpvb_expr=self#expressionpvb_exprinletpvb_constraint=self#optionself#value_constraintpvb_constraintinletpvb_attributes=self#attributespvb_attributesinletpvb_loc=self#locationpvb_locinself#record[("pvb_pat",pvb_pat);("pvb_expr",pvb_expr);("pvb_constraint",pvb_constraint);("pvb_attributes",pvb_attributes);("pvb_loc",pvb_loc);]methodmodule_binding:module_binding->'res=fun{pmb_name;pmb_expr;pmb_attributes;pmb_loc}->letpmb_name=self#loc(self#optionself#string)pmb_nameinletpmb_expr=self#module_exprpmb_exprinletpmb_attributes=self#attributespmb_attributesinletpmb_loc=self#locationpmb_locinself#record[("pmb_name",pmb_name);("pmb_expr",pmb_expr);("pmb_attributes",pmb_attributes);("pmb_loc",pmb_loc);]methodtoplevel_phrase:toplevel_phrase->'res=funx->matchxwith|Ptop_defa->leta=self#structureainself#constr"Ptop_def"[a]|Ptop_dira->leta=self#toplevel_directiveainself#constr"Ptop_dir"[a]methodtoplevel_directive:toplevel_directive->'res=fun{pdir_name;pdir_arg;pdir_loc}->letpdir_name=self#locself#stringpdir_nameinletpdir_arg=self#optionself#directive_argumentpdir_arginletpdir_loc=self#locationpdir_locinself#record[("pdir_name",pdir_name);("pdir_arg",pdir_arg);("pdir_loc",pdir_loc);]methoddirective_argument:directive_argument->'res=fun{pdira_desc;pdira_loc}->letpdira_desc=self#directive_argument_descpdira_descinletpdira_loc=self#locationpdira_locinself#record[("pdira_desc",pdira_desc);("pdira_loc",pdira_loc)]methoddirective_argument_desc:directive_argument_desc->'res=funx->matchxwith|Pdir_stringa->leta=self#stringainself#constr"Pdir_string"[a]|Pdir_int(a,b)->leta=self#stringainletb=self#optionself#charbinself#constr"Pdir_int"[a;b]|Pdir_identa->leta=self#longidentainself#constr"Pdir_ident"[a]|Pdir_boola->leta=self#boolainself#constr"Pdir_bool"[a]methodcases:cases->'res=self#listself#caseendclassvirtual['ctx,'res]lift_map_with_context=object(self)methodvirtualrecord:'ctx->(string*'res)list->'resmethodvirtualconstr:'ctx->string->'reslist->'resmethodvirtualtuple:'ctx->'reslist->'resmethodvirtualother:'a.'ctx->'a->'resmethodvirtualbool:'ctx->bool->bool*'resmethodvirtualchar:'ctx->char->char*'resmethodvirtualint:'ctx->int->int*'resmethodvirtuallist:'a.('ctx->'a->'a*'res)->'ctx->'alist->'alist*'resmethodvirtualoption:'a.('ctx->'a->'a*'res)->'ctx->'aoption->'aoption*'resmethodvirtualstring:'ctx->string->string*'resmethodposition:'ctx->position->position*'res=functx{pos_fname;pos_lnum;pos_bol;pos_cnum}->letpos_fname=self#stringctxpos_fnameinletpos_lnum=self#intctxpos_lnuminletpos_bol=self#intctxpos_bolinletpos_cnum=self#intctxpos_cnumin({pos_fname=Stdlib.fstpos_fname;pos_lnum=Stdlib.fstpos_lnum;pos_bol=Stdlib.fstpos_bol;pos_cnum=Stdlib.fstpos_cnum;},self#recordctx[("pos_fname",Stdlib.sndpos_fname);("pos_lnum",Stdlib.sndpos_lnum);("pos_bol",Stdlib.sndpos_bol);("pos_cnum",Stdlib.sndpos_cnum);])methodlocation:'ctx->location->location*'res=functx{loc_start;loc_end;loc_ghost}->letloc_start=self#positionctxloc_startinletloc_end=self#positionctxloc_endinletloc_ghost=self#boolctxloc_ghostin({loc_start=Stdlib.fstloc_start;loc_end=Stdlib.fstloc_end;loc_ghost=Stdlib.fstloc_ghost;},self#recordctx[("loc_start",Stdlib.sndloc_start);("loc_end",Stdlib.sndloc_end);("loc_ghost",Stdlib.sndloc_ghost);])methodlocation_stack:'ctx->location_stack->location_stack*'res=self#listself#locationmethodloc:'a.('ctx->'a->'a*'res)->'ctx->'aloc->'aloc*'res=fun_actx{txt;loc}->lettxt=_actxtxtinletloc=self#locationctxlocin({txt=Stdlib.fsttxt;loc=Stdlib.fstloc},self#recordctx[("txt",Stdlib.sndtxt);("loc",Stdlib.sndloc)])methodlongident:'ctx->longident->longident*'res=functxx->matchxwith|Lidenta->leta=self#stringctxain(Lident(Stdlib.fsta),self#constrctx"Lident"[Stdlib.snda])|Ldot(a,b)->leta=self#longidentctxainletb=self#stringctxbin(Ldot(Stdlib.fsta,Stdlib.fstb),self#constrctx"Ldot"[Stdlib.snda;Stdlib.sndb])|Lapply(a,b)->leta=self#longidentctxainletb=self#longidentctxbin(Lapply(Stdlib.fsta,Stdlib.fstb),self#constrctx"Lapply"[Stdlib.snda;Stdlib.sndb])methodlongident_loc:'ctx->longident_loc->longident_loc*'res=self#locself#longidentmethodrec_flag:'ctx->rec_flag->rec_flag*'res=functxx->(x,self#otherctxx)methoddirection_flag:'ctx->direction_flag->direction_flag*'res=functxx->(x,self#otherctxx)methodprivate_flag:'ctx->private_flag->private_flag*'res=functxx->(x,self#otherctxx)methodmutable_flag:'ctx->mutable_flag->mutable_flag*'res=functxx->(x,self#otherctxx)methodvirtual_flag:'ctx->virtual_flag->virtual_flag*'res=functxx->(x,self#otherctxx)methodoverride_flag:'ctx->override_flag->override_flag*'res=functxx->(x,self#otherctxx)methodclosed_flag:'ctx->closed_flag->closed_flag*'res=functxx->(x,self#otherctxx)methodlabel:'ctx->label->label*'res=self#stringmethodarg_label:'ctx->arg_label->arg_label*'res=functxx->matchxwith|Nolabel->(Nolabel,self#constrctx"Nolabel"[])|Labelleda->leta=self#stringctxain(Labelled(Stdlib.fsta),self#constrctx"Labelled"[Stdlib.snda])|Optionala->leta=self#stringctxain(Optional(Stdlib.fsta),self#constrctx"Optional"[Stdlib.snda])methodvariance:'ctx->variance->variance*'res=functxx->(x,self#otherctxx)methodinjectivity:'ctx->injectivity->injectivity*'res=functxx->(x,self#otherctxx)methodconstant:'ctx->constant->constant*'res=functxx->matchxwith|Pconst_integer(a,b)->leta=self#stringctxainletb=self#optionself#charctxbin(Pconst_integer(Stdlib.fsta,Stdlib.fstb),self#constrctx"Pconst_integer"[Stdlib.snda;Stdlib.sndb])|Pconst_chara->leta=self#charctxain(Pconst_char(Stdlib.fsta),self#constrctx"Pconst_char"[Stdlib.snda])|Pconst_string(a,b,c)->leta=self#stringctxainletb=self#locationctxbinletc=self#optionself#stringctxcin(Pconst_string(Stdlib.fsta,Stdlib.fstb,Stdlib.fstc),self#constrctx"Pconst_string"[Stdlib.snda;Stdlib.sndb;Stdlib.sndc])|Pconst_float(a,b)->leta=self#stringctxainletb=self#optionself#charctxbin(Pconst_float(Stdlib.fsta,Stdlib.fstb),self#constrctx"Pconst_float"[Stdlib.snda;Stdlib.sndb])methodattribute:'ctx->attribute->attribute*'res=functx{attr_name;attr_payload;attr_loc}->letattr_name=self#locself#stringctxattr_nameinletattr_payload=self#payloadctxattr_payloadinletattr_loc=self#locationctxattr_locin({attr_name=Stdlib.fstattr_name;attr_payload=Stdlib.fstattr_payload;attr_loc=Stdlib.fstattr_loc;},self#recordctx[("attr_name",Stdlib.sndattr_name);("attr_payload",Stdlib.sndattr_payload);("attr_loc",Stdlib.sndattr_loc);])methodextension:'ctx->extension->extension*'res=functx(a,b)->leta=self#locself#stringctxainletb=self#payloadctxbin((Stdlib.fsta,Stdlib.fstb),self#tuplectx[Stdlib.snda;Stdlib.sndb])methodattributes:'ctx->attributes->attributes*'res=self#listself#attributemethodpayload:'ctx->payload->payload*'res=functxx->matchxwith|PStra->leta=self#structurectxain(PStr(Stdlib.fsta),self#constrctx"PStr"[Stdlib.snda])|PSiga->leta=self#signaturectxain(PSig(Stdlib.fsta),self#constrctx"PSig"[Stdlib.snda])|PTypa->leta=self#core_typectxain(PTyp(Stdlib.fsta),self#constrctx"PTyp"[Stdlib.snda])|PPat(a,b)->leta=self#patternctxainletb=self#optionself#expressionctxbin(PPat(Stdlib.fsta,Stdlib.fstb),self#constrctx"PPat"[Stdlib.snda;Stdlib.sndb])methodcore_type:'ctx->core_type->core_type*'res=functx{ptyp_desc;ptyp_loc;ptyp_loc_stack;ptyp_attributes}->letptyp_desc=self#core_type_descctxptyp_descinletptyp_loc=self#locationctxptyp_locinletptyp_loc_stack=self#location_stackctxptyp_loc_stackinletptyp_attributes=self#attributesctxptyp_attributesin({ptyp_desc=Stdlib.fstptyp_desc;ptyp_loc=Stdlib.fstptyp_loc;ptyp_loc_stack=Stdlib.fstptyp_loc_stack;ptyp_attributes=Stdlib.fstptyp_attributes;},self#recordctx[("ptyp_desc",Stdlib.sndptyp_desc);("ptyp_loc",Stdlib.sndptyp_loc);("ptyp_loc_stack",Stdlib.sndptyp_loc_stack);("ptyp_attributes",Stdlib.sndptyp_attributes);])methodcore_type_desc:'ctx->core_type_desc->core_type_desc*'res=functxx->matchxwith|Ptyp_any->(Ptyp_any,self#constrctx"Ptyp_any"[])|Ptyp_vara->leta=self#stringctxain(Ptyp_var(Stdlib.fsta),self#constrctx"Ptyp_var"[Stdlib.snda])|Ptyp_arrow(a,b,c)->leta=self#arg_labelctxainletb=self#core_typectxbinletc=self#core_typectxcin(Ptyp_arrow(Stdlib.fsta,Stdlib.fstb,Stdlib.fstc),self#constrctx"Ptyp_arrow"[Stdlib.snda;Stdlib.sndb;Stdlib.sndc])|Ptyp_tuplea->leta=self#listself#core_typectxain(Ptyp_tuple(Stdlib.fsta),self#constrctx"Ptyp_tuple"[Stdlib.snda])|Ptyp_constr(a,b)->leta=self#longident_locctxainletb=self#listself#core_typectxbin(Ptyp_constr(Stdlib.fsta,Stdlib.fstb),self#constrctx"Ptyp_constr"[Stdlib.snda;Stdlib.sndb])|Ptyp_object(a,b)->leta=self#listself#object_fieldctxainletb=self#closed_flagctxbin(Ptyp_object(Stdlib.fsta,Stdlib.fstb),self#constrctx"Ptyp_object"[Stdlib.snda;Stdlib.sndb])|Ptyp_class(a,b)->leta=self#longident_locctxainletb=self#listself#core_typectxbin(Ptyp_class(Stdlib.fsta,Stdlib.fstb),self#constrctx"Ptyp_class"[Stdlib.snda;Stdlib.sndb])|Ptyp_alias(a,b)->leta=self#core_typectxainletb=self#locself#stringctxbin(Ptyp_alias(Stdlib.fsta,Stdlib.fstb),self#constrctx"Ptyp_alias"[Stdlib.snda;Stdlib.sndb])|Ptyp_variant(a,b,c)->leta=self#listself#row_fieldctxainletb=self#closed_flagctxbinletc=self#option(self#listself#label)ctxcin(Ptyp_variant(Stdlib.fsta,Stdlib.fstb,Stdlib.fstc),self#constrctx"Ptyp_variant"[Stdlib.snda;Stdlib.sndb;Stdlib.sndc])|Ptyp_poly(a,b)->leta=self#list(self#locself#string)ctxainletb=self#core_typectxbin(Ptyp_poly(Stdlib.fsta,Stdlib.fstb),self#constrctx"Ptyp_poly"[Stdlib.snda;Stdlib.sndb])|Ptyp_packagea->leta=self#package_typectxain(Ptyp_package(Stdlib.fsta),self#constrctx"Ptyp_package"[Stdlib.snda])|Ptyp_open(a,b)->leta=self#longident_locctxainletb=self#core_typectxbin(Ptyp_open(Stdlib.fsta,Stdlib.fstb),self#constrctx"Ptyp_open"[Stdlib.snda;Stdlib.sndb])|Ptyp_extensiona->leta=self#extensionctxain(Ptyp_extension(Stdlib.fsta),self#constrctx"Ptyp_extension"[Stdlib.snda])methodpackage_type:'ctx->package_type->package_type*'res=functx(a,b)->leta=self#longident_locctxainletb=self#list(functx(a,b)->leta=self#longident_locctxainletb=self#core_typectxbin((Stdlib.fsta,Stdlib.fstb),self#tuplectx[Stdlib.snda;Stdlib.sndb]))ctxbin((Stdlib.fsta,Stdlib.fstb),self#tuplectx[Stdlib.snda;Stdlib.sndb])methodrow_field:'ctx->row_field->row_field*'res=functx{prf_desc;prf_loc;prf_attributes}->letprf_desc=self#row_field_descctxprf_descinletprf_loc=self#locationctxprf_locinletprf_attributes=self#attributesctxprf_attributesin({prf_desc=Stdlib.fstprf_desc;prf_loc=Stdlib.fstprf_loc;prf_attributes=Stdlib.fstprf_attributes;},self#recordctx[("prf_desc",Stdlib.sndprf_desc);("prf_loc",Stdlib.sndprf_loc);("prf_attributes",Stdlib.sndprf_attributes);])methodrow_field_desc:'ctx->row_field_desc->row_field_desc*'res=functxx->matchxwith|Rtag(a,b,c)->leta=self#locself#labelctxainletb=self#boolctxbinletc=self#listself#core_typectxcin(Rtag(Stdlib.fsta,Stdlib.fstb,Stdlib.fstc),self#constrctx"Rtag"[Stdlib.snda;Stdlib.sndb;Stdlib.sndc])|Rinherita->leta=self#core_typectxain(Rinherit(Stdlib.fsta),self#constrctx"Rinherit"[Stdlib.snda])methodobject_field:'ctx->object_field->object_field*'res=functx{pof_desc;pof_loc;pof_attributes}->letpof_desc=self#object_field_descctxpof_descinletpof_loc=self#locationctxpof_locinletpof_attributes=self#attributesctxpof_attributesin({pof_desc=Stdlib.fstpof_desc;pof_loc=Stdlib.fstpof_loc;pof_attributes=Stdlib.fstpof_attributes;},self#recordctx[("pof_desc",Stdlib.sndpof_desc);("pof_loc",Stdlib.sndpof_loc);("pof_attributes",Stdlib.sndpof_attributes);])methodobject_field_desc:'ctx->object_field_desc->object_field_desc*'res=functxx->matchxwith|Otag(a,b)->leta=self#locself#labelctxainletb=self#core_typectxbin(Otag(Stdlib.fsta,Stdlib.fstb),self#constrctx"Otag"[Stdlib.snda;Stdlib.sndb])|Oinherita->leta=self#core_typectxain(Oinherit(Stdlib.fsta),self#constrctx"Oinherit"[Stdlib.snda])methodpattern:'ctx->pattern->pattern*'res=functx{ppat_desc;ppat_loc;ppat_loc_stack;ppat_attributes}->letppat_desc=self#pattern_descctxppat_descinletppat_loc=self#locationctxppat_locinletppat_loc_stack=self#location_stackctxppat_loc_stackinletppat_attributes=self#attributesctxppat_attributesin({ppat_desc=Stdlib.fstppat_desc;ppat_loc=Stdlib.fstppat_loc;ppat_loc_stack=Stdlib.fstppat_loc_stack;ppat_attributes=Stdlib.fstppat_attributes;},self#recordctx[("ppat_desc",Stdlib.sndppat_desc);("ppat_loc",Stdlib.sndppat_loc);("ppat_loc_stack",Stdlib.sndppat_loc_stack);("ppat_attributes",Stdlib.sndppat_attributes);])methodpattern_desc:'ctx->pattern_desc->pattern_desc*'res=functxx->matchxwith|Ppat_any->(Ppat_any,self#constrctx"Ppat_any"[])|Ppat_vara->leta=self#locself#stringctxain(Ppat_var(Stdlib.fsta),self#constrctx"Ppat_var"[Stdlib.snda])|Ppat_alias(a,b)->leta=self#patternctxainletb=self#locself#stringctxbin(Ppat_alias(Stdlib.fsta,Stdlib.fstb),self#constrctx"Ppat_alias"[Stdlib.snda;Stdlib.sndb])|Ppat_constanta->leta=self#constantctxain(Ppat_constant(Stdlib.fsta),self#constrctx"Ppat_constant"[Stdlib.snda])|Ppat_interval(a,b)->leta=self#constantctxainletb=self#constantctxbin(Ppat_interval(Stdlib.fsta,Stdlib.fstb),self#constrctx"Ppat_interval"[Stdlib.snda;Stdlib.sndb])|Ppat_tuplea->leta=self#listself#patternctxain(Ppat_tuple(Stdlib.fsta),self#constrctx"Ppat_tuple"[Stdlib.snda])|Ppat_construct(a,b)->leta=self#longident_locctxainletb=self#option(functx(a,b)->leta=self#list(self#locself#string)ctxainletb=self#patternctxbin((Stdlib.fsta,Stdlib.fstb),self#tuplectx[Stdlib.snda;Stdlib.sndb]))ctxbin(Ppat_construct(Stdlib.fsta,Stdlib.fstb),self#constrctx"Ppat_construct"[Stdlib.snda;Stdlib.sndb])|Ppat_variant(a,b)->leta=self#labelctxainletb=self#optionself#patternctxbin(Ppat_variant(Stdlib.fsta,Stdlib.fstb),self#constrctx"Ppat_variant"[Stdlib.snda;Stdlib.sndb])|Ppat_record(a,b)->leta=self#list(functx(a,b)->leta=self#longident_locctxainletb=self#patternctxbin((Stdlib.fsta,Stdlib.fstb),self#tuplectx[Stdlib.snda;Stdlib.sndb]))ctxainletb=self#closed_flagctxbin(Ppat_record(Stdlib.fsta,Stdlib.fstb),self#constrctx"Ppat_record"[Stdlib.snda;Stdlib.sndb])|Ppat_arraya->leta=self#listself#patternctxain(Ppat_array(Stdlib.fsta),self#constrctx"Ppat_array"[Stdlib.snda])|Ppat_or(a,b)->leta=self#patternctxainletb=self#patternctxbin(Ppat_or(Stdlib.fsta,Stdlib.fstb),self#constrctx"Ppat_or"[Stdlib.snda;Stdlib.sndb])|Ppat_constraint(a,b)->leta=self#patternctxainletb=self#core_typectxbin(Ppat_constraint(Stdlib.fsta,Stdlib.fstb),self#constrctx"Ppat_constraint"[Stdlib.snda;Stdlib.sndb])|Ppat_typea->leta=self#longident_locctxain(Ppat_type(Stdlib.fsta),self#constrctx"Ppat_type"[Stdlib.snda])|Ppat_lazya->leta=self#patternctxain(Ppat_lazy(Stdlib.fsta),self#constrctx"Ppat_lazy"[Stdlib.snda])|Ppat_unpacka->leta=self#loc(self#optionself#string)ctxain(Ppat_unpack(Stdlib.fsta),self#constrctx"Ppat_unpack"[Stdlib.snda])|Ppat_exceptiona->leta=self#patternctxain(Ppat_exception(Stdlib.fsta),self#constrctx"Ppat_exception"[Stdlib.snda])|Ppat_extensiona->leta=self#extensionctxain(Ppat_extension(Stdlib.fsta),self#constrctx"Ppat_extension"[Stdlib.snda])|Ppat_open(a,b)->leta=self#longident_locctxainletb=self#patternctxbin(Ppat_open(Stdlib.fsta,Stdlib.fstb),self#constrctx"Ppat_open"[Stdlib.snda;Stdlib.sndb])methodexpression:'ctx->expression->expression*'res=functx{pexp_desc;pexp_loc;pexp_loc_stack;pexp_attributes}->letpexp_desc=self#expression_descctxpexp_descinletpexp_loc=self#locationctxpexp_locinletpexp_loc_stack=self#location_stackctxpexp_loc_stackinletpexp_attributes=self#attributesctxpexp_attributesin({pexp_desc=Stdlib.fstpexp_desc;pexp_loc=Stdlib.fstpexp_loc;pexp_loc_stack=Stdlib.fstpexp_loc_stack;pexp_attributes=Stdlib.fstpexp_attributes;},self#recordctx[("pexp_desc",Stdlib.sndpexp_desc);("pexp_loc",Stdlib.sndpexp_loc);("pexp_loc_stack",Stdlib.sndpexp_loc_stack);("pexp_attributes",Stdlib.sndpexp_attributes);])methodexpression_desc:'ctx->expression_desc->expression_desc*'res=functxx->matchxwith|Pexp_identa->leta=self#longident_locctxain(Pexp_ident(Stdlib.fsta),self#constrctx"Pexp_ident"[Stdlib.snda])|Pexp_constanta->leta=self#constantctxain(Pexp_constant(Stdlib.fsta),self#constrctx"Pexp_constant"[Stdlib.snda])|Pexp_let(a,b,c)->leta=self#rec_flagctxainletb=self#listself#value_bindingctxbinletc=self#expressionctxcin(Pexp_let(Stdlib.fsta,Stdlib.fstb,Stdlib.fstc),self#constrctx"Pexp_let"[Stdlib.snda;Stdlib.sndb;Stdlib.sndc])|Pexp_function(a,b,c)->leta=self#listself#function_paramctxainletb=self#optionself#type_constraintctxbinletc=self#function_bodyctxcin(Pexp_function(Stdlib.fsta,Stdlib.fstb,Stdlib.fstc),self#constrctx"Pexp_function"[Stdlib.snda;Stdlib.sndb;Stdlib.sndc])|Pexp_apply(a,b)->leta=self#expressionctxainletb=self#list(functx(a,b)->leta=self#arg_labelctxainletb=self#expressionctxbin((Stdlib.fsta,Stdlib.fstb),self#tuplectx[Stdlib.snda;Stdlib.sndb]))ctxbin(Pexp_apply(Stdlib.fsta,Stdlib.fstb),self#constrctx"Pexp_apply"[Stdlib.snda;Stdlib.sndb])|Pexp_match(a,b)->leta=self#expressionctxainletb=self#casesctxbin(Pexp_match(Stdlib.fsta,Stdlib.fstb),self#constrctx"Pexp_match"[Stdlib.snda;Stdlib.sndb])|Pexp_try(a,b)->leta=self#expressionctxainletb=self#casesctxbin(Pexp_try(Stdlib.fsta,Stdlib.fstb),self#constrctx"Pexp_try"[Stdlib.snda;Stdlib.sndb])|Pexp_tuplea->leta=self#listself#expressionctxain(Pexp_tuple(Stdlib.fsta),self#constrctx"Pexp_tuple"[Stdlib.snda])|Pexp_construct(a,b)->leta=self#longident_locctxainletb=self#optionself#expressionctxbin(Pexp_construct(Stdlib.fsta,Stdlib.fstb),self#constrctx"Pexp_construct"[Stdlib.snda;Stdlib.sndb])|Pexp_variant(a,b)->leta=self#labelctxainletb=self#optionself#expressionctxbin(Pexp_variant(Stdlib.fsta,Stdlib.fstb),self#constrctx"Pexp_variant"[Stdlib.snda;Stdlib.sndb])|Pexp_record(a,b)->leta=self#list(functx(a,b)->leta=self#longident_locctxainletb=self#expressionctxbin((Stdlib.fsta,Stdlib.fstb),self#tuplectx[Stdlib.snda;Stdlib.sndb]))ctxainletb=self#optionself#expressionctxbin(Pexp_record(Stdlib.fsta,Stdlib.fstb),self#constrctx"Pexp_record"[Stdlib.snda;Stdlib.sndb])|Pexp_field(a,b)->leta=self#expressionctxainletb=self#longident_locctxbin(Pexp_field(Stdlib.fsta,Stdlib.fstb),self#constrctx"Pexp_field"[Stdlib.snda;Stdlib.sndb])|Pexp_setfield(a,b,c)->leta=self#expressionctxainletb=self#longident_locctxbinletc=self#expressionctxcin(Pexp_setfield(Stdlib.fsta,Stdlib.fstb,Stdlib.fstc),self#constrctx"Pexp_setfield"[Stdlib.snda;Stdlib.sndb;Stdlib.sndc])|Pexp_arraya->leta=self#listself#expressionctxain(Pexp_array(Stdlib.fsta),self#constrctx"Pexp_array"[Stdlib.snda])|Pexp_ifthenelse(a,b,c)->leta=self#expressionctxainletb=self#expressionctxbinletc=self#optionself#expressionctxcin(Pexp_ifthenelse(Stdlib.fsta,Stdlib.fstb,Stdlib.fstc),self#constrctx"Pexp_ifthenelse"[Stdlib.snda;Stdlib.sndb;Stdlib.sndc])|Pexp_sequence(a,b)->leta=self#expressionctxainletb=self#expressionctxbin(Pexp_sequence(Stdlib.fsta,Stdlib.fstb),self#constrctx"Pexp_sequence"[Stdlib.snda;Stdlib.sndb])|Pexp_while(a,b)->leta=self#expressionctxainletb=self#expressionctxbin(Pexp_while(Stdlib.fsta,Stdlib.fstb),self#constrctx"Pexp_while"[Stdlib.snda;Stdlib.sndb])|Pexp_for(a,b,c,d,e)->leta=self#patternctxainletb=self#expressionctxbinletc=self#expressionctxcinletd=self#direction_flagctxdinlete=self#expressionctxein(Pexp_for(Stdlib.fsta,Stdlib.fstb,Stdlib.fstc,Stdlib.fstd,Stdlib.fste),self#constrctx"Pexp_for"[Stdlib.snda;Stdlib.sndb;Stdlib.sndc;Stdlib.sndd;Stdlib.snde;])|Pexp_constraint(a,b)->leta=self#expressionctxainletb=self#core_typectxbin(Pexp_constraint(Stdlib.fsta,Stdlib.fstb),self#constrctx"Pexp_constraint"[Stdlib.snda;Stdlib.sndb])|Pexp_coerce(a,b,c)->leta=self#expressionctxainletb=self#optionself#core_typectxbinletc=self#core_typectxcin(Pexp_coerce(Stdlib.fsta,Stdlib.fstb,Stdlib.fstc),self#constrctx"Pexp_coerce"[Stdlib.snda;Stdlib.sndb;Stdlib.sndc])|Pexp_send(a,b)->leta=self#expressionctxainletb=self#locself#labelctxbin(Pexp_send(Stdlib.fsta,Stdlib.fstb),self#constrctx"Pexp_send"[Stdlib.snda;Stdlib.sndb])|Pexp_newa->leta=self#longident_locctxain(Pexp_new(Stdlib.fsta),self#constrctx"Pexp_new"[Stdlib.snda])|Pexp_setinstvar(a,b)->leta=self#locself#labelctxainletb=self#expressionctxbin(Pexp_setinstvar(Stdlib.fsta,Stdlib.fstb),self#constrctx"Pexp_setinstvar"[Stdlib.snda;Stdlib.sndb])|Pexp_overridea->leta=self#list(functx(a,b)->leta=self#locself#labelctxainletb=self#expressionctxbin((Stdlib.fsta,Stdlib.fstb),self#tuplectx[Stdlib.snda;Stdlib.sndb]))ctxain(Pexp_override(Stdlib.fsta),self#constrctx"Pexp_override"[Stdlib.snda])|Pexp_letmodule(a,b,c)->leta=self#loc(self#optionself#string)ctxainletb=self#module_exprctxbinletc=self#expressionctxcin(Pexp_letmodule(Stdlib.fsta,Stdlib.fstb,Stdlib.fstc),self#constrctx"Pexp_letmodule"[Stdlib.snda;Stdlib.sndb;Stdlib.sndc])|Pexp_letexception(a,b)->leta=self#extension_constructorctxainletb=self#expressionctxbin(Pexp_letexception(Stdlib.fsta,Stdlib.fstb),self#constrctx"Pexp_letexception"[Stdlib.snda;Stdlib.sndb])|Pexp_asserta->leta=self#expressionctxain(Pexp_assert(Stdlib.fsta),self#constrctx"Pexp_assert"[Stdlib.snda])|Pexp_lazya->leta=self#expressionctxain(Pexp_lazy(Stdlib.fsta),self#constrctx"Pexp_lazy"[Stdlib.snda])|Pexp_poly(a,b)->leta=self#expressionctxainletb=self#optionself#core_typectxbin(Pexp_poly(Stdlib.fsta,Stdlib.fstb),self#constrctx"Pexp_poly"[Stdlib.snda;Stdlib.sndb])|Pexp_objecta->leta=self#class_structurectxain(Pexp_object(Stdlib.fsta),self#constrctx"Pexp_object"[Stdlib.snda])|Pexp_newtype(a,b)->leta=self#locself#stringctxainletb=self#expressionctxbin(Pexp_newtype(Stdlib.fsta,Stdlib.fstb),self#constrctx"Pexp_newtype"[Stdlib.snda;Stdlib.sndb])|Pexp_packa->leta=self#module_exprctxain(Pexp_pack(Stdlib.fsta),self#constrctx"Pexp_pack"[Stdlib.snda])|Pexp_open(a,b)->leta=self#open_declarationctxainletb=self#expressionctxbin(Pexp_open(Stdlib.fsta,Stdlib.fstb),self#constrctx"Pexp_open"[Stdlib.snda;Stdlib.sndb])|Pexp_letopa->leta=self#letopctxain(Pexp_letop(Stdlib.fsta),self#constrctx"Pexp_letop"[Stdlib.snda])|Pexp_extensiona->leta=self#extensionctxain(Pexp_extension(Stdlib.fsta),self#constrctx"Pexp_extension"[Stdlib.snda])|Pexp_unreachable->(Pexp_unreachable,self#constrctx"Pexp_unreachable"[])methodcase:'ctx->case->case*'res=functx{pc_lhs;pc_guard;pc_rhs}->letpc_lhs=self#patternctxpc_lhsinletpc_guard=self#optionself#expressionctxpc_guardinletpc_rhs=self#expressionctxpc_rhsin({pc_lhs=Stdlib.fstpc_lhs;pc_guard=Stdlib.fstpc_guard;pc_rhs=Stdlib.fstpc_rhs;},self#recordctx[("pc_lhs",Stdlib.sndpc_lhs);("pc_guard",Stdlib.sndpc_guard);("pc_rhs",Stdlib.sndpc_rhs);])methodletop:'ctx->letop->letop*'res=functx{let_;ands;body}->letlet_=self#binding_opctxlet_inletands=self#listself#binding_opctxandsinletbody=self#expressionctxbodyin({let_=Stdlib.fstlet_;ands=Stdlib.fstands;body=Stdlib.fstbody;},self#recordctx[("let_",Stdlib.sndlet_);("ands",Stdlib.sndands);("body",Stdlib.sndbody);])methodbinding_op:'ctx->binding_op->binding_op*'res=functx{pbop_op;pbop_pat;pbop_exp;pbop_loc}->letpbop_op=self#locself#stringctxpbop_opinletpbop_pat=self#patternctxpbop_patinletpbop_exp=self#expressionctxpbop_expinletpbop_loc=self#locationctxpbop_locin({pbop_op=Stdlib.fstpbop_op;pbop_pat=Stdlib.fstpbop_pat;pbop_exp=Stdlib.fstpbop_exp;pbop_loc=Stdlib.fstpbop_loc;},self#recordctx[("pbop_op",Stdlib.sndpbop_op);("pbop_pat",Stdlib.sndpbop_pat);("pbop_exp",Stdlib.sndpbop_exp);("pbop_loc",Stdlib.sndpbop_loc);])methodfunction_param_desc:'ctx->function_param_desc->function_param_desc*'res=functxx->matchxwith|Pparam_val(a,b,c)->leta=self#arg_labelctxainletb=self#optionself#expressionctxbinletc=self#patternctxcin(Pparam_val(Stdlib.fsta,Stdlib.fstb,Stdlib.fstc),self#constrctx"Pparam_val"[Stdlib.snda;Stdlib.sndb;Stdlib.sndc])|Pparam_newtypea->leta=self#locself#stringctxain(Pparam_newtype(Stdlib.fsta),self#constrctx"Pparam_newtype"[Stdlib.snda])methodfunction_param:'ctx->function_param->function_param*'res=functx{pparam_loc;pparam_desc}->letpparam_loc=self#locationctxpparam_locinletpparam_desc=self#function_param_descctxpparam_descin({pparam_loc=Stdlib.fstpparam_loc;pparam_desc=Stdlib.fstpparam_desc;},self#recordctx[("pparam_loc",Stdlib.sndpparam_loc);("pparam_desc",Stdlib.sndpparam_desc);])methodfunction_body:'ctx->function_body->function_body*'res=functxx->matchxwith|Pfunction_bodya->leta=self#expressionctxain(Pfunction_body(Stdlib.fsta),self#constrctx"Pfunction_body"[Stdlib.snda])|Pfunction_cases(a,b,c)->leta=self#casesctxainletb=self#locationctxbinletc=self#attributesctxcin(Pfunction_cases(Stdlib.fsta,Stdlib.fstb,Stdlib.fstc),self#constrctx"Pfunction_cases"[Stdlib.snda;Stdlib.sndb;Stdlib.sndc])methodtype_constraint:'ctx->type_constraint->type_constraint*'res=functxx->matchxwith|Pconstrainta->leta=self#core_typectxain(Pconstraint(Stdlib.fsta),self#constrctx"Pconstraint"[Stdlib.snda])|Pcoerce(a,b)->leta=self#optionself#core_typectxainletb=self#core_typectxbin(Pcoerce(Stdlib.fsta,Stdlib.fstb),self#constrctx"Pcoerce"[Stdlib.snda;Stdlib.sndb])methodvalue_description:'ctx->value_description->value_description*'res=functx{pval_name;pval_type;pval_prim;pval_attributes;pval_loc}->letpval_name=self#locself#stringctxpval_nameinletpval_type=self#core_typectxpval_typeinletpval_prim=self#listself#stringctxpval_priminletpval_attributes=self#attributesctxpval_attributesinletpval_loc=self#locationctxpval_locin({pval_name=Stdlib.fstpval_name;pval_type=Stdlib.fstpval_type;pval_prim=Stdlib.fstpval_prim;pval_attributes=Stdlib.fstpval_attributes;pval_loc=Stdlib.fstpval_loc;},self#recordctx[("pval_name",Stdlib.sndpval_name);("pval_type",Stdlib.sndpval_type);("pval_prim",Stdlib.sndpval_prim);("pval_attributes",Stdlib.sndpval_attributes);("pval_loc",Stdlib.sndpval_loc);])methodtype_declaration:'ctx->type_declaration->type_declaration*'res=functx{ptype_name;ptype_params;ptype_cstrs;ptype_kind;ptype_private;ptype_manifest;ptype_attributes;ptype_loc;}->letptype_name=self#locself#stringctxptype_nameinletptype_params=self#list(functx(a,b)->leta=self#core_typectxainletb=(functx(a,b)->leta=self#variancectxainletb=self#injectivityctxbin((Stdlib.fsta,Stdlib.fstb),self#tuplectx[Stdlib.snda;Stdlib.sndb]))ctxbin((Stdlib.fsta,Stdlib.fstb),self#tuplectx[Stdlib.snda;Stdlib.sndb]))ctxptype_paramsinletptype_cstrs=self#list(functx(a,b,c)->leta=self#core_typectxainletb=self#core_typectxbinletc=self#locationctxcin((Stdlib.fsta,Stdlib.fstb,Stdlib.fstc),self#tuplectx[Stdlib.snda;Stdlib.sndb;Stdlib.sndc]))ctxptype_cstrsinletptype_kind=self#type_kindctxptype_kindinletptype_private=self#private_flagctxptype_privateinletptype_manifest=self#optionself#core_typectxptype_manifestinletptype_attributes=self#attributesctxptype_attributesinletptype_loc=self#locationctxptype_locin({ptype_name=Stdlib.fstptype_name;ptype_params=Stdlib.fstptype_params;ptype_cstrs=Stdlib.fstptype_cstrs;ptype_kind=Stdlib.fstptype_kind;ptype_private=Stdlib.fstptype_private;ptype_manifest=Stdlib.fstptype_manifest;ptype_attributes=Stdlib.fstptype_attributes;ptype_loc=Stdlib.fstptype_loc;},self#recordctx[("ptype_name",Stdlib.sndptype_name);("ptype_params",Stdlib.sndptype_params);("ptype_cstrs",Stdlib.sndptype_cstrs);("ptype_kind",Stdlib.sndptype_kind);("ptype_private",Stdlib.sndptype_private);("ptype_manifest",Stdlib.sndptype_manifest);("ptype_attributes",Stdlib.sndptype_attributes);("ptype_loc",Stdlib.sndptype_loc);])methodtype_kind:'ctx->type_kind->type_kind*'res=functxx->matchxwith|Ptype_abstract->(Ptype_abstract,self#constrctx"Ptype_abstract"[])|Ptype_varianta->leta=self#listself#constructor_declarationctxain(Ptype_variant(Stdlib.fsta),self#constrctx"Ptype_variant"[Stdlib.snda])|Ptype_recorda->leta=self#listself#label_declarationctxain(Ptype_record(Stdlib.fsta),self#constrctx"Ptype_record"[Stdlib.snda])|Ptype_open->(Ptype_open,self#constrctx"Ptype_open"[])methodlabel_declaration:'ctx->label_declaration->label_declaration*'res=functx{pld_name;pld_mutable;pld_type;pld_loc;pld_attributes}->letpld_name=self#locself#stringctxpld_nameinletpld_mutable=self#mutable_flagctxpld_mutableinletpld_type=self#core_typectxpld_typeinletpld_loc=self#locationctxpld_locinletpld_attributes=self#attributesctxpld_attributesin({pld_name=Stdlib.fstpld_name;pld_mutable=Stdlib.fstpld_mutable;pld_type=Stdlib.fstpld_type;pld_loc=Stdlib.fstpld_loc;pld_attributes=Stdlib.fstpld_attributes;},self#recordctx[("pld_name",Stdlib.sndpld_name);("pld_mutable",Stdlib.sndpld_mutable);("pld_type",Stdlib.sndpld_type);("pld_loc",Stdlib.sndpld_loc);("pld_attributes",Stdlib.sndpld_attributes);])methodconstructor_declaration:'ctx->constructor_declaration->constructor_declaration*'res=functx{pcd_name;pcd_vars;pcd_args;pcd_res;pcd_loc;pcd_attributes}->letpcd_name=self#locself#stringctxpcd_nameinletpcd_vars=self#list(self#locself#string)ctxpcd_varsinletpcd_args=self#constructor_argumentsctxpcd_argsinletpcd_res=self#optionself#core_typectxpcd_resinletpcd_loc=self#locationctxpcd_locinletpcd_attributes=self#attributesctxpcd_attributesin({pcd_name=Stdlib.fstpcd_name;pcd_vars=Stdlib.fstpcd_vars;pcd_args=Stdlib.fstpcd_args;pcd_res=Stdlib.fstpcd_res;pcd_loc=Stdlib.fstpcd_loc;pcd_attributes=Stdlib.fstpcd_attributes;},self#recordctx[("pcd_name",Stdlib.sndpcd_name);("pcd_vars",Stdlib.sndpcd_vars);("pcd_args",Stdlib.sndpcd_args);("pcd_res",Stdlib.sndpcd_res);("pcd_loc",Stdlib.sndpcd_loc);("pcd_attributes",Stdlib.sndpcd_attributes);])methodconstructor_arguments:'ctx->constructor_arguments->constructor_arguments*'res=functxx->matchxwith|Pcstr_tuplea->leta=self#listself#core_typectxain(Pcstr_tuple(Stdlib.fsta),self#constrctx"Pcstr_tuple"[Stdlib.snda])|Pcstr_recorda->leta=self#listself#label_declarationctxain(Pcstr_record(Stdlib.fsta),self#constrctx"Pcstr_record"[Stdlib.snda])methodtype_extension:'ctx->type_extension->type_extension*'res=functx{ptyext_path;ptyext_params;ptyext_constructors;ptyext_private;ptyext_loc;ptyext_attributes;}->letptyext_path=self#longident_locctxptyext_pathinletptyext_params=self#list(functx(a,b)->leta=self#core_typectxainletb=(functx(a,b)->leta=self#variancectxainletb=self#injectivityctxbin((Stdlib.fsta,Stdlib.fstb),self#tuplectx[Stdlib.snda;Stdlib.sndb]))ctxbin((Stdlib.fsta,Stdlib.fstb),self#tuplectx[Stdlib.snda;Stdlib.sndb]))ctxptyext_paramsinletptyext_constructors=self#listself#extension_constructorctxptyext_constructorsinletptyext_private=self#private_flagctxptyext_privateinletptyext_loc=self#locationctxptyext_locinletptyext_attributes=self#attributesctxptyext_attributesin({ptyext_path=Stdlib.fstptyext_path;ptyext_params=Stdlib.fstptyext_params;ptyext_constructors=Stdlib.fstptyext_constructors;ptyext_private=Stdlib.fstptyext_private;ptyext_loc=Stdlib.fstptyext_loc;ptyext_attributes=Stdlib.fstptyext_attributes;},self#recordctx[("ptyext_path",Stdlib.sndptyext_path);("ptyext_params",Stdlib.sndptyext_params);("ptyext_constructors",Stdlib.sndptyext_constructors);("ptyext_private",Stdlib.sndptyext_private);("ptyext_loc",Stdlib.sndptyext_loc);("ptyext_attributes",Stdlib.sndptyext_attributes);])methodextension_constructor:'ctx->extension_constructor->extension_constructor*'res=functx{pext_name;pext_kind;pext_loc;pext_attributes}->letpext_name=self#locself#stringctxpext_nameinletpext_kind=self#extension_constructor_kindctxpext_kindinletpext_loc=self#locationctxpext_locinletpext_attributes=self#attributesctxpext_attributesin({pext_name=Stdlib.fstpext_name;pext_kind=Stdlib.fstpext_kind;pext_loc=Stdlib.fstpext_loc;pext_attributes=Stdlib.fstpext_attributes;},self#recordctx[("pext_name",Stdlib.sndpext_name);("pext_kind",Stdlib.sndpext_kind);("pext_loc",Stdlib.sndpext_loc);("pext_attributes",Stdlib.sndpext_attributes);])methodtype_exception:'ctx->type_exception->type_exception*'res=functx{ptyexn_constructor;ptyexn_loc;ptyexn_attributes}->letptyexn_constructor=self#extension_constructorctxptyexn_constructorinletptyexn_loc=self#locationctxptyexn_locinletptyexn_attributes=self#attributesctxptyexn_attributesin({ptyexn_constructor=Stdlib.fstptyexn_constructor;ptyexn_loc=Stdlib.fstptyexn_loc;ptyexn_attributes=Stdlib.fstptyexn_attributes;},self#recordctx[("ptyexn_constructor",Stdlib.sndptyexn_constructor);("ptyexn_loc",Stdlib.sndptyexn_loc);("ptyexn_attributes",Stdlib.sndptyexn_attributes);])methodextension_constructor_kind:'ctx->extension_constructor_kind->extension_constructor_kind*'res=functxx->matchxwith|Pext_decl(a,b,c)->leta=self#list(self#locself#string)ctxainletb=self#constructor_argumentsctxbinletc=self#optionself#core_typectxcin(Pext_decl(Stdlib.fsta,Stdlib.fstb,Stdlib.fstc),self#constrctx"Pext_decl"[Stdlib.snda;Stdlib.sndb;Stdlib.sndc])|Pext_rebinda->leta=self#longident_locctxain(Pext_rebind(Stdlib.fsta),self#constrctx"Pext_rebind"[Stdlib.snda])methodclass_type:'ctx->class_type->class_type*'res=functx{pcty_desc;pcty_loc;pcty_attributes}->letpcty_desc=self#class_type_descctxpcty_descinletpcty_loc=self#locationctxpcty_locinletpcty_attributes=self#attributesctxpcty_attributesin({pcty_desc=Stdlib.fstpcty_desc;pcty_loc=Stdlib.fstpcty_loc;pcty_attributes=Stdlib.fstpcty_attributes;},self#recordctx[("pcty_desc",Stdlib.sndpcty_desc);("pcty_loc",Stdlib.sndpcty_loc);("pcty_attributes",Stdlib.sndpcty_attributes);])methodclass_type_desc:'ctx->class_type_desc->class_type_desc*'res=functxx->matchxwith|Pcty_constr(a,b)->leta=self#longident_locctxainletb=self#listself#core_typectxbin(Pcty_constr(Stdlib.fsta,Stdlib.fstb),self#constrctx"Pcty_constr"[Stdlib.snda;Stdlib.sndb])|Pcty_signaturea->leta=self#class_signaturectxain(Pcty_signature(Stdlib.fsta),self#constrctx"Pcty_signature"[Stdlib.snda])|Pcty_arrow(a,b,c)->leta=self#arg_labelctxainletb=self#core_typectxbinletc=self#class_typectxcin(Pcty_arrow(Stdlib.fsta,Stdlib.fstb,Stdlib.fstc),self#constrctx"Pcty_arrow"[Stdlib.snda;Stdlib.sndb;Stdlib.sndc])|Pcty_extensiona->leta=self#extensionctxain(Pcty_extension(Stdlib.fsta),self#constrctx"Pcty_extension"[Stdlib.snda])|Pcty_open(a,b)->leta=self#open_descriptionctxainletb=self#class_typectxbin(Pcty_open(Stdlib.fsta,Stdlib.fstb),self#constrctx"Pcty_open"[Stdlib.snda;Stdlib.sndb])methodclass_signature:'ctx->class_signature->class_signature*'res=functx{pcsig_self;pcsig_fields}->letpcsig_self=self#core_typectxpcsig_selfinletpcsig_fields=self#listself#class_type_fieldctxpcsig_fieldsin({pcsig_self=Stdlib.fstpcsig_self;pcsig_fields=Stdlib.fstpcsig_fields;},self#recordctx[("pcsig_self",Stdlib.sndpcsig_self);("pcsig_fields",Stdlib.sndpcsig_fields);])methodclass_type_field:'ctx->class_type_field->class_type_field*'res=functx{pctf_desc;pctf_loc;pctf_attributes}->letpctf_desc=self#class_type_field_descctxpctf_descinletpctf_loc=self#locationctxpctf_locinletpctf_attributes=self#attributesctxpctf_attributesin({pctf_desc=Stdlib.fstpctf_desc;pctf_loc=Stdlib.fstpctf_loc;pctf_attributes=Stdlib.fstpctf_attributes;},self#recordctx[("pctf_desc",Stdlib.sndpctf_desc);("pctf_loc",Stdlib.sndpctf_loc);("pctf_attributes",Stdlib.sndpctf_attributes);])methodclass_type_field_desc:'ctx->class_type_field_desc->class_type_field_desc*'res=functxx->matchxwith|Pctf_inherita->leta=self#class_typectxain(Pctf_inherit(Stdlib.fsta),self#constrctx"Pctf_inherit"[Stdlib.snda])|Pctf_vala->leta=(functx(a,b,c,d)->leta=self#locself#labelctxainletb=self#mutable_flagctxbinletc=self#virtual_flagctxcinletd=self#core_typectxdin((Stdlib.fsta,Stdlib.fstb,Stdlib.fstc,Stdlib.fstd),self#tuplectx[Stdlib.snda;Stdlib.sndb;Stdlib.sndc;Stdlib.sndd]))ctxain(Pctf_val(Stdlib.fsta),self#constrctx"Pctf_val"[Stdlib.snda])|Pctf_methoda->leta=(functx(a,b,c,d)->leta=self#locself#labelctxainletb=self#private_flagctxbinletc=self#virtual_flagctxcinletd=self#core_typectxdin((Stdlib.fsta,Stdlib.fstb,Stdlib.fstc,Stdlib.fstd),self#tuplectx[Stdlib.snda;Stdlib.sndb;Stdlib.sndc;Stdlib.sndd]))ctxain(Pctf_method(Stdlib.fsta),self#constrctx"Pctf_method"[Stdlib.snda])|Pctf_constrainta->leta=(functx(a,b)->leta=self#core_typectxainletb=self#core_typectxbin((Stdlib.fsta,Stdlib.fstb),self#tuplectx[Stdlib.snda;Stdlib.sndb]))ctxain(Pctf_constraint(Stdlib.fsta),self#constrctx"Pctf_constraint"[Stdlib.snda])|Pctf_attributea->leta=self#attributectxain(Pctf_attribute(Stdlib.fsta),self#constrctx"Pctf_attribute"[Stdlib.snda])|Pctf_extensiona->leta=self#extensionctxain(Pctf_extension(Stdlib.fsta),self#constrctx"Pctf_extension"[Stdlib.snda])methodclass_infos:'a.('ctx->'a->'a*'res)->'ctx->'aclass_infos->'aclass_infos*'res=fun_actx{pci_virt;pci_params;pci_name;pci_expr;pci_loc;pci_attributes}->letpci_virt=self#virtual_flagctxpci_virtinletpci_params=self#list(functx(a,b)->leta=self#core_typectxainletb=(functx(a,b)->leta=self#variancectxainletb=self#injectivityctxbin((Stdlib.fsta,Stdlib.fstb),self#tuplectx[Stdlib.snda;Stdlib.sndb]))ctxbin((Stdlib.fsta,Stdlib.fstb),self#tuplectx[Stdlib.snda;Stdlib.sndb]))ctxpci_paramsinletpci_name=self#locself#stringctxpci_nameinletpci_expr=_actxpci_exprinletpci_loc=self#locationctxpci_locinletpci_attributes=self#attributesctxpci_attributesin({pci_virt=Stdlib.fstpci_virt;pci_params=Stdlib.fstpci_params;pci_name=Stdlib.fstpci_name;pci_expr=Stdlib.fstpci_expr;pci_loc=Stdlib.fstpci_loc;pci_attributes=Stdlib.fstpci_attributes;},self#recordctx[("pci_virt",Stdlib.sndpci_virt);("pci_params",Stdlib.sndpci_params);("pci_name",Stdlib.sndpci_name);("pci_expr",Stdlib.sndpci_expr);("pci_loc",Stdlib.sndpci_loc);("pci_attributes",Stdlib.sndpci_attributes);])methodclass_description:'ctx->class_description->class_description*'res=self#class_infosself#class_typemethodclass_type_declaration:'ctx->class_type_declaration->class_type_declaration*'res=self#class_infosself#class_typemethodclass_expr:'ctx->class_expr->class_expr*'res=functx{pcl_desc;pcl_loc;pcl_attributes}->letpcl_desc=self#class_expr_descctxpcl_descinletpcl_loc=self#locationctxpcl_locinletpcl_attributes=self#attributesctxpcl_attributesin({pcl_desc=Stdlib.fstpcl_desc;pcl_loc=Stdlib.fstpcl_loc;pcl_attributes=Stdlib.fstpcl_attributes;},self#recordctx[("pcl_desc",Stdlib.sndpcl_desc);("pcl_loc",Stdlib.sndpcl_loc);("pcl_attributes",Stdlib.sndpcl_attributes);])methodclass_expr_desc:'ctx->class_expr_desc->class_expr_desc*'res=functxx->matchxwith|Pcl_constr(a,b)->leta=self#longident_locctxainletb=self#listself#core_typectxbin(Pcl_constr(Stdlib.fsta,Stdlib.fstb),self#constrctx"Pcl_constr"[Stdlib.snda;Stdlib.sndb])|Pcl_structurea->leta=self#class_structurectxain(Pcl_structure(Stdlib.fsta),self#constrctx"Pcl_structure"[Stdlib.snda])|Pcl_fun(a,b,c,d)->leta=self#arg_labelctxainletb=self#optionself#expressionctxbinletc=self#patternctxcinletd=self#class_exprctxdin(Pcl_fun(Stdlib.fsta,Stdlib.fstb,Stdlib.fstc,Stdlib.fstd),self#constrctx"Pcl_fun"[Stdlib.snda;Stdlib.sndb;Stdlib.sndc;Stdlib.sndd])|Pcl_apply(a,b)->leta=self#class_exprctxainletb=self#list(functx(a,b)->leta=self#arg_labelctxainletb=self#expressionctxbin((Stdlib.fsta,Stdlib.fstb),self#tuplectx[Stdlib.snda;Stdlib.sndb]))ctxbin(Pcl_apply(Stdlib.fsta,Stdlib.fstb),self#constrctx"Pcl_apply"[Stdlib.snda;Stdlib.sndb])|Pcl_let(a,b,c)->leta=self#rec_flagctxainletb=self#listself#value_bindingctxbinletc=self#class_exprctxcin(Pcl_let(Stdlib.fsta,Stdlib.fstb,Stdlib.fstc),self#constrctx"Pcl_let"[Stdlib.snda;Stdlib.sndb;Stdlib.sndc])|Pcl_constraint(a,b)->leta=self#class_exprctxainletb=self#class_typectxbin(Pcl_constraint(Stdlib.fsta,Stdlib.fstb),self#constrctx"Pcl_constraint"[Stdlib.snda;Stdlib.sndb])|Pcl_extensiona->leta=self#extensionctxain(Pcl_extension(Stdlib.fsta),self#constrctx"Pcl_extension"[Stdlib.snda])|Pcl_open(a,b)->leta=self#open_descriptionctxainletb=self#class_exprctxbin(Pcl_open(Stdlib.fsta,Stdlib.fstb),self#constrctx"Pcl_open"[Stdlib.snda;Stdlib.sndb])methodclass_structure:'ctx->class_structure->class_structure*'res=functx{pcstr_self;pcstr_fields}->letpcstr_self=self#patternctxpcstr_selfinletpcstr_fields=self#listself#class_fieldctxpcstr_fieldsin({pcstr_self=Stdlib.fstpcstr_self;pcstr_fields=Stdlib.fstpcstr_fields;},self#recordctx[("pcstr_self",Stdlib.sndpcstr_self);("pcstr_fields",Stdlib.sndpcstr_fields);])methodclass_field:'ctx->class_field->class_field*'res=functx{pcf_desc;pcf_loc;pcf_attributes}->letpcf_desc=self#class_field_descctxpcf_descinletpcf_loc=self#locationctxpcf_locinletpcf_attributes=self#attributesctxpcf_attributesin({pcf_desc=Stdlib.fstpcf_desc;pcf_loc=Stdlib.fstpcf_loc;pcf_attributes=Stdlib.fstpcf_attributes;},self#recordctx[("pcf_desc",Stdlib.sndpcf_desc);("pcf_loc",Stdlib.sndpcf_loc);("pcf_attributes",Stdlib.sndpcf_attributes);])methodclass_field_desc:'ctx->class_field_desc->class_field_desc*'res=functxx->matchxwith|Pcf_inherit(a,b,c)->leta=self#override_flagctxainletb=self#class_exprctxbinletc=self#option(self#locself#string)ctxcin(Pcf_inherit(Stdlib.fsta,Stdlib.fstb,Stdlib.fstc),self#constrctx"Pcf_inherit"[Stdlib.snda;Stdlib.sndb;Stdlib.sndc])|Pcf_vala->leta=(functx(a,b,c)->leta=self#locself#labelctxainletb=self#mutable_flagctxbinletc=self#class_field_kindctxcin((Stdlib.fsta,Stdlib.fstb,Stdlib.fstc),self#tuplectx[Stdlib.snda;Stdlib.sndb;Stdlib.sndc]))ctxain(Pcf_val(Stdlib.fsta),self#constrctx"Pcf_val"[Stdlib.snda])|Pcf_methoda->leta=(functx(a,b,c)->leta=self#locself#labelctxainletb=self#private_flagctxbinletc=self#class_field_kindctxcin((Stdlib.fsta,Stdlib.fstb,Stdlib.fstc),self#tuplectx[Stdlib.snda;Stdlib.sndb;Stdlib.sndc]))ctxain(Pcf_method(Stdlib.fsta),self#constrctx"Pcf_method"[Stdlib.snda])|Pcf_constrainta->leta=(functx(a,b)->leta=self#core_typectxainletb=self#core_typectxbin((Stdlib.fsta,Stdlib.fstb),self#tuplectx[Stdlib.snda;Stdlib.sndb]))ctxain(Pcf_constraint(Stdlib.fsta),self#constrctx"Pcf_constraint"[Stdlib.snda])|Pcf_initializera->leta=self#expressionctxain(Pcf_initializer(Stdlib.fsta),self#constrctx"Pcf_initializer"[Stdlib.snda])|Pcf_attributea->leta=self#attributectxain(Pcf_attribute(Stdlib.fsta),self#constrctx"Pcf_attribute"[Stdlib.snda])|Pcf_extensiona->leta=self#extensionctxain(Pcf_extension(Stdlib.fsta),self#constrctx"Pcf_extension"[Stdlib.snda])methodclass_field_kind:'ctx->class_field_kind->class_field_kind*'res=functxx->matchxwith|Cfk_virtuala->leta=self#core_typectxain(Cfk_virtual(Stdlib.fsta),self#constrctx"Cfk_virtual"[Stdlib.snda])|Cfk_concrete(a,b)->leta=self#override_flagctxainletb=self#expressionctxbin(Cfk_concrete(Stdlib.fsta,Stdlib.fstb),self#constrctx"Cfk_concrete"[Stdlib.snda;Stdlib.sndb])methodclass_declaration:'ctx->class_declaration->class_declaration*'res=self#class_infosself#class_exprmethodmodule_type:'ctx->module_type->module_type*'res=functx{pmty_desc;pmty_loc;pmty_attributes}->letpmty_desc=self#module_type_descctxpmty_descinletpmty_loc=self#locationctxpmty_locinletpmty_attributes=self#attributesctxpmty_attributesin({pmty_desc=Stdlib.fstpmty_desc;pmty_loc=Stdlib.fstpmty_loc;pmty_attributes=Stdlib.fstpmty_attributes;},self#recordctx[("pmty_desc",Stdlib.sndpmty_desc);("pmty_loc",Stdlib.sndpmty_loc);("pmty_attributes",Stdlib.sndpmty_attributes);])methodmodule_type_desc:'ctx->module_type_desc->module_type_desc*'res=functxx->matchxwith|Pmty_identa->leta=self#longident_locctxain(Pmty_ident(Stdlib.fsta),self#constrctx"Pmty_ident"[Stdlib.snda])|Pmty_signaturea->leta=self#signaturectxain(Pmty_signature(Stdlib.fsta),self#constrctx"Pmty_signature"[Stdlib.snda])|Pmty_functor(a,b)->leta=self#functor_parameterctxainletb=self#module_typectxbin(Pmty_functor(Stdlib.fsta,Stdlib.fstb),self#constrctx"Pmty_functor"[Stdlib.snda;Stdlib.sndb])|Pmty_with(a,b)->leta=self#module_typectxainletb=self#listself#with_constraintctxbin(Pmty_with(Stdlib.fsta,Stdlib.fstb),self#constrctx"Pmty_with"[Stdlib.snda;Stdlib.sndb])|Pmty_typeofa->leta=self#module_exprctxain(Pmty_typeof(Stdlib.fsta),self#constrctx"Pmty_typeof"[Stdlib.snda])|Pmty_extensiona->leta=self#extensionctxain(Pmty_extension(Stdlib.fsta),self#constrctx"Pmty_extension"[Stdlib.snda])|Pmty_aliasa->leta=self#longident_locctxain(Pmty_alias(Stdlib.fsta),self#constrctx"Pmty_alias"[Stdlib.snda])methodfunctor_parameter:'ctx->functor_parameter->functor_parameter*'res=functxx->matchxwith|Unit->(Unit,self#constrctx"Unit"[])|Named(a,b)->leta=self#loc(self#optionself#string)ctxainletb=self#module_typectxbin(Named(Stdlib.fsta,Stdlib.fstb),self#constrctx"Named"[Stdlib.snda;Stdlib.sndb])methodsignature:'ctx->signature->signature*'res=self#listself#signature_itemmethodsignature_item:'ctx->signature_item->signature_item*'res=functx{psig_desc;psig_loc}->letpsig_desc=self#signature_item_descctxpsig_descinletpsig_loc=self#locationctxpsig_locin({psig_desc=Stdlib.fstpsig_desc;psig_loc=Stdlib.fstpsig_loc},self#recordctx[("psig_desc",Stdlib.sndpsig_desc);("psig_loc",Stdlib.sndpsig_loc);])methodsignature_item_desc:'ctx->signature_item_desc->signature_item_desc*'res=functxx->matchxwith|Psig_valuea->leta=self#value_descriptionctxain(Psig_value(Stdlib.fsta),self#constrctx"Psig_value"[Stdlib.snda])|Psig_type(a,b)->leta=self#rec_flagctxainletb=self#listself#type_declarationctxbin(Psig_type(Stdlib.fsta,Stdlib.fstb),self#constrctx"Psig_type"[Stdlib.snda;Stdlib.sndb])|Psig_typesubsta->leta=self#listself#type_declarationctxain(Psig_typesubst(Stdlib.fsta),self#constrctx"Psig_typesubst"[Stdlib.snda])|Psig_typexta->leta=self#type_extensionctxain(Psig_typext(Stdlib.fsta),self#constrctx"Psig_typext"[Stdlib.snda])|Psig_exceptiona->leta=self#type_exceptionctxain(Psig_exception(Stdlib.fsta),self#constrctx"Psig_exception"[Stdlib.snda])|Psig_modulea->leta=self#module_declarationctxain(Psig_module(Stdlib.fsta),self#constrctx"Psig_module"[Stdlib.snda])|Psig_modsubsta->leta=self#module_substitutionctxain(Psig_modsubst(Stdlib.fsta),self#constrctx"Psig_modsubst"[Stdlib.snda])|Psig_recmodulea->leta=self#listself#module_declarationctxain(Psig_recmodule(Stdlib.fsta),self#constrctx"Psig_recmodule"[Stdlib.snda])|Psig_modtypea->leta=self#module_type_declarationctxain(Psig_modtype(Stdlib.fsta),self#constrctx"Psig_modtype"[Stdlib.snda])|Psig_modtypesubsta->leta=self#module_type_declarationctxain(Psig_modtypesubst(Stdlib.fsta),self#constrctx"Psig_modtypesubst"[Stdlib.snda])|Psig_opena->leta=self#open_descriptionctxain(Psig_open(Stdlib.fsta),self#constrctx"Psig_open"[Stdlib.snda])|Psig_includea->leta=self#include_descriptionctxain(Psig_include(Stdlib.fsta),self#constrctx"Psig_include"[Stdlib.snda])|Psig_classa->leta=self#listself#class_descriptionctxain(Psig_class(Stdlib.fsta),self#constrctx"Psig_class"[Stdlib.snda])|Psig_class_typea->leta=self#listself#class_type_declarationctxain(Psig_class_type(Stdlib.fsta),self#constrctx"Psig_class_type"[Stdlib.snda])|Psig_attributea->leta=self#attributectxain(Psig_attribute(Stdlib.fsta),self#constrctx"Psig_attribute"[Stdlib.snda])|Psig_extension(a,b)->leta=self#extensionctxainletb=self#attributesctxbin(Psig_extension(Stdlib.fsta,Stdlib.fstb),self#constrctx"Psig_extension"[Stdlib.snda;Stdlib.sndb])methodmodule_declaration:'ctx->module_declaration->module_declaration*'res=functx{pmd_name;pmd_type;pmd_attributes;pmd_loc}->letpmd_name=self#loc(self#optionself#string)ctxpmd_nameinletpmd_type=self#module_typectxpmd_typeinletpmd_attributes=self#attributesctxpmd_attributesinletpmd_loc=self#locationctxpmd_locin({pmd_name=Stdlib.fstpmd_name;pmd_type=Stdlib.fstpmd_type;pmd_attributes=Stdlib.fstpmd_attributes;pmd_loc=Stdlib.fstpmd_loc;},self#recordctx[("pmd_name",Stdlib.sndpmd_name);("pmd_type",Stdlib.sndpmd_type);("pmd_attributes",Stdlib.sndpmd_attributes);("pmd_loc",Stdlib.sndpmd_loc);])methodmodule_substitution:'ctx->module_substitution->module_substitution*'res=functx{pms_name;pms_manifest;pms_attributes;pms_loc}->letpms_name=self#locself#stringctxpms_nameinletpms_manifest=self#longident_locctxpms_manifestinletpms_attributes=self#attributesctxpms_attributesinletpms_loc=self#locationctxpms_locin({pms_name=Stdlib.fstpms_name;pms_manifest=Stdlib.fstpms_manifest;pms_attributes=Stdlib.fstpms_attributes;pms_loc=Stdlib.fstpms_loc;},self#recordctx[("pms_name",Stdlib.sndpms_name);("pms_manifest",Stdlib.sndpms_manifest);("pms_attributes",Stdlib.sndpms_attributes);("pms_loc",Stdlib.sndpms_loc);])methodmodule_type_declaration:'ctx->module_type_declaration->module_type_declaration*'res=functx{pmtd_name;pmtd_type;pmtd_attributes;pmtd_loc}->letpmtd_name=self#locself#stringctxpmtd_nameinletpmtd_type=self#optionself#module_typectxpmtd_typeinletpmtd_attributes=self#attributesctxpmtd_attributesinletpmtd_loc=self#locationctxpmtd_locin({pmtd_name=Stdlib.fstpmtd_name;pmtd_type=Stdlib.fstpmtd_type;pmtd_attributes=Stdlib.fstpmtd_attributes;pmtd_loc=Stdlib.fstpmtd_loc;},self#recordctx[("pmtd_name",Stdlib.sndpmtd_name);("pmtd_type",Stdlib.sndpmtd_type);("pmtd_attributes",Stdlib.sndpmtd_attributes);("pmtd_loc",Stdlib.sndpmtd_loc);])methodopen_infos:'a.('ctx->'a->'a*'res)->'ctx->'aopen_infos->'aopen_infos*'res=fun_actx{popen_expr;popen_override;popen_loc;popen_attributes}->letpopen_expr=_actxpopen_exprinletpopen_override=self#override_flagctxpopen_overrideinletpopen_loc=self#locationctxpopen_locinletpopen_attributes=self#attributesctxpopen_attributesin({popen_expr=Stdlib.fstpopen_expr;popen_override=Stdlib.fstpopen_override;popen_loc=Stdlib.fstpopen_loc;popen_attributes=Stdlib.fstpopen_attributes;},self#recordctx[("popen_expr",Stdlib.sndpopen_expr);("popen_override",Stdlib.sndpopen_override);("popen_loc",Stdlib.sndpopen_loc);("popen_attributes",Stdlib.sndpopen_attributes);])methodopen_description:'ctx->open_description->open_description*'res=self#open_infosself#longident_locmethodopen_declaration:'ctx->open_declaration->open_declaration*'res=self#open_infosself#module_exprmethodinclude_infos:'a.('ctx->'a->'a*'res)->'ctx->'ainclude_infos->'ainclude_infos*'res=fun_actx{pincl_mod;pincl_loc;pincl_attributes}->letpincl_mod=_actxpincl_modinletpincl_loc=self#locationctxpincl_locinletpincl_attributes=self#attributesctxpincl_attributesin({pincl_mod=Stdlib.fstpincl_mod;pincl_loc=Stdlib.fstpincl_loc;pincl_attributes=Stdlib.fstpincl_attributes;},self#recordctx[("pincl_mod",Stdlib.sndpincl_mod);("pincl_loc",Stdlib.sndpincl_loc);("pincl_attributes",Stdlib.sndpincl_attributes);])methodinclude_description:'ctx->include_description->include_description*'res=self#include_infosself#module_typemethodinclude_declaration:'ctx->include_declaration->include_declaration*'res=self#include_infosself#module_exprmethodwith_constraint:'ctx->with_constraint->with_constraint*'res=functxx->matchxwith|Pwith_type(a,b)->leta=self#longident_locctxainletb=self#type_declarationctxbin(Pwith_type(Stdlib.fsta,Stdlib.fstb),self#constrctx"Pwith_type"[Stdlib.snda;Stdlib.sndb])|Pwith_module(a,b)->leta=self#longident_locctxainletb=self#longident_locctxbin(Pwith_module(Stdlib.fsta,Stdlib.fstb),self#constrctx"Pwith_module"[Stdlib.snda;Stdlib.sndb])|Pwith_modtype(a,b)->leta=self#longident_locctxainletb=self#module_typectxbin(Pwith_modtype(Stdlib.fsta,Stdlib.fstb),self#constrctx"Pwith_modtype"[Stdlib.snda;Stdlib.sndb])|Pwith_modtypesubst(a,b)->leta=self#longident_locctxainletb=self#module_typectxbin(Pwith_modtypesubst(Stdlib.fsta,Stdlib.fstb),self#constrctx"Pwith_modtypesubst"[Stdlib.snda;Stdlib.sndb])|Pwith_typesubst(a,b)->leta=self#longident_locctxainletb=self#type_declarationctxbin(Pwith_typesubst(Stdlib.fsta,Stdlib.fstb),self#constrctx"Pwith_typesubst"[Stdlib.snda;Stdlib.sndb])|Pwith_modsubst(a,b)->leta=self#longident_locctxainletb=self#longident_locctxbin(Pwith_modsubst(Stdlib.fsta,Stdlib.fstb),self#constrctx"Pwith_modsubst"[Stdlib.snda;Stdlib.sndb])methodmodule_expr:'ctx->module_expr->module_expr*'res=functx{pmod_desc;pmod_loc;pmod_attributes}->letpmod_desc=self#module_expr_descctxpmod_descinletpmod_loc=self#locationctxpmod_locinletpmod_attributes=self#attributesctxpmod_attributesin({pmod_desc=Stdlib.fstpmod_desc;pmod_loc=Stdlib.fstpmod_loc;pmod_attributes=Stdlib.fstpmod_attributes;},self#recordctx[("pmod_desc",Stdlib.sndpmod_desc);("pmod_loc",Stdlib.sndpmod_loc);("pmod_attributes",Stdlib.sndpmod_attributes);])methodmodule_expr_desc:'ctx->module_expr_desc->module_expr_desc*'res=functxx->matchxwith|Pmod_identa->leta=self#longident_locctxain(Pmod_ident(Stdlib.fsta),self#constrctx"Pmod_ident"[Stdlib.snda])|Pmod_structurea->leta=self#structurectxain(Pmod_structure(Stdlib.fsta),self#constrctx"Pmod_structure"[Stdlib.snda])|Pmod_functor(a,b)->leta=self#functor_parameterctxainletb=self#module_exprctxbin(Pmod_functor(Stdlib.fsta,Stdlib.fstb),self#constrctx"Pmod_functor"[Stdlib.snda;Stdlib.sndb])|Pmod_apply(a,b)->leta=self#module_exprctxainletb=self#module_exprctxbin(Pmod_apply(Stdlib.fsta,Stdlib.fstb),self#constrctx"Pmod_apply"[Stdlib.snda;Stdlib.sndb])|Pmod_apply_unita->leta=self#module_exprctxain(Pmod_apply_unit(Stdlib.fsta),self#constrctx"Pmod_apply_unit"[Stdlib.snda])|Pmod_constraint(a,b)->leta=self#module_exprctxainletb=self#module_typectxbin(Pmod_constraint(Stdlib.fsta,Stdlib.fstb),self#constrctx"Pmod_constraint"[Stdlib.snda;Stdlib.sndb])|Pmod_unpacka->leta=self#expressionctxain(Pmod_unpack(Stdlib.fsta),self#constrctx"Pmod_unpack"[Stdlib.snda])|Pmod_extensiona->leta=self#extensionctxain(Pmod_extension(Stdlib.fsta),self#constrctx"Pmod_extension"[Stdlib.snda])methodstructure:'ctx->structure->structure*'res=self#listself#structure_itemmethodstructure_item:'ctx->structure_item->structure_item*'res=functx{pstr_desc;pstr_loc}->letpstr_desc=self#structure_item_descctxpstr_descinletpstr_loc=self#locationctxpstr_locin({pstr_desc=Stdlib.fstpstr_desc;pstr_loc=Stdlib.fstpstr_loc},self#recordctx[("pstr_desc",Stdlib.sndpstr_desc);("pstr_loc",Stdlib.sndpstr_loc);])methodstructure_item_desc:'ctx->structure_item_desc->structure_item_desc*'res=functxx->matchxwith|Pstr_eval(a,b)->leta=self#expressionctxainletb=self#attributesctxbin(Pstr_eval(Stdlib.fsta,Stdlib.fstb),self#constrctx"Pstr_eval"[Stdlib.snda;Stdlib.sndb])|Pstr_value(a,b)->leta=self#rec_flagctxainletb=self#listself#value_bindingctxbin(Pstr_value(Stdlib.fsta,Stdlib.fstb),self#constrctx"Pstr_value"[Stdlib.snda;Stdlib.sndb])|Pstr_primitivea->leta=self#value_descriptionctxain(Pstr_primitive(Stdlib.fsta),self#constrctx"Pstr_primitive"[Stdlib.snda])|Pstr_type(a,b)->leta=self#rec_flagctxainletb=self#listself#type_declarationctxbin(Pstr_type(Stdlib.fsta,Stdlib.fstb),self#constrctx"Pstr_type"[Stdlib.snda;Stdlib.sndb])|Pstr_typexta->leta=self#type_extensionctxain(Pstr_typext(Stdlib.fsta),self#constrctx"Pstr_typext"[Stdlib.snda])|Pstr_exceptiona->leta=self#type_exceptionctxain(Pstr_exception(Stdlib.fsta),self#constrctx"Pstr_exception"[Stdlib.snda])|Pstr_modulea->leta=self#module_bindingctxain(Pstr_module(Stdlib.fsta),self#constrctx"Pstr_module"[Stdlib.snda])|Pstr_recmodulea->leta=self#listself#module_bindingctxain(Pstr_recmodule(Stdlib.fsta),self#constrctx"Pstr_recmodule"[Stdlib.snda])|Pstr_modtypea->leta=self#module_type_declarationctxain(Pstr_modtype(Stdlib.fsta),self#constrctx"Pstr_modtype"[Stdlib.snda])|Pstr_opena->leta=self#open_declarationctxain(Pstr_open(Stdlib.fsta),self#constrctx"Pstr_open"[Stdlib.snda])|Pstr_classa->leta=self#listself#class_declarationctxain(Pstr_class(Stdlib.fsta),self#constrctx"Pstr_class"[Stdlib.snda])|Pstr_class_typea->leta=self#listself#class_type_declarationctxain(Pstr_class_type(Stdlib.fsta),self#constrctx"Pstr_class_type"[Stdlib.snda])|Pstr_includea->leta=self#include_declarationctxain(Pstr_include(Stdlib.fsta),self#constrctx"Pstr_include"[Stdlib.snda])|Pstr_attributea->leta=self#attributectxain(Pstr_attribute(Stdlib.fsta),self#constrctx"Pstr_attribute"[Stdlib.snda])|Pstr_extension(a,b)->leta=self#extensionctxainletb=self#attributesctxbin(Pstr_extension(Stdlib.fsta,Stdlib.fstb),self#constrctx"Pstr_extension"[Stdlib.snda;Stdlib.sndb])methodvalue_constraint:'ctx->value_constraint->value_constraint*'res=functxx->matchxwith|Pvc_constraint{locally_abstract_univars;typ}->letlocally_abstract_univars=self#list(self#locself#string)ctxlocally_abstract_univarsinlettyp=self#core_typectxtypin(Pvc_constraint{locally_abstract_univars=Stdlib.fstlocally_abstract_univars;typ=Stdlib.fsttyp;},self#constrctx"Pvc_constraint"[self#recordctx[("locally_abstract_univars",Stdlib.sndlocally_abstract_univars);("typ",Stdlib.sndtyp);];])|Pvc_coercion{ground;coercion}->letground=self#optionself#core_typectxgroundinletcoercion=self#core_typectxcoercionin(Pvc_coercion{ground=Stdlib.fstground;coercion=Stdlib.fstcoercion},self#constrctx"Pvc_coercion"[self#recordctx[("ground",Stdlib.sndground);("coercion",Stdlib.sndcoercion);];])methodvalue_binding:'ctx->value_binding->value_binding*'res=functx{pvb_pat;pvb_expr;pvb_constraint;pvb_attributes;pvb_loc}->letpvb_pat=self#patternctxpvb_patinletpvb_expr=self#expressionctxpvb_exprinletpvb_constraint=self#optionself#value_constraintctxpvb_constraintinletpvb_attributes=self#attributesctxpvb_attributesinletpvb_loc=self#locationctxpvb_locin({pvb_pat=Stdlib.fstpvb_pat;pvb_expr=Stdlib.fstpvb_expr;pvb_constraint=Stdlib.fstpvb_constraint;pvb_attributes=Stdlib.fstpvb_attributes;pvb_loc=Stdlib.fstpvb_loc;},self#recordctx[("pvb_pat",Stdlib.sndpvb_pat);("pvb_expr",Stdlib.sndpvb_expr);("pvb_constraint",Stdlib.sndpvb_constraint);("pvb_attributes",Stdlib.sndpvb_attributes);("pvb_loc",Stdlib.sndpvb_loc);])methodmodule_binding:'ctx->module_binding->module_binding*'res=functx{pmb_name;pmb_expr;pmb_attributes;pmb_loc}->letpmb_name=self#loc(self#optionself#string)ctxpmb_nameinletpmb_expr=self#module_exprctxpmb_exprinletpmb_attributes=self#attributesctxpmb_attributesinletpmb_loc=self#locationctxpmb_locin({pmb_name=Stdlib.fstpmb_name;pmb_expr=Stdlib.fstpmb_expr;pmb_attributes=Stdlib.fstpmb_attributes;pmb_loc=Stdlib.fstpmb_loc;},self#recordctx[("pmb_name",Stdlib.sndpmb_name);("pmb_expr",Stdlib.sndpmb_expr);("pmb_attributes",Stdlib.sndpmb_attributes);("pmb_loc",Stdlib.sndpmb_loc);])methodtoplevel_phrase:'ctx->toplevel_phrase->toplevel_phrase*'res=functxx->matchxwith|Ptop_defa->leta=self#structurectxain(Ptop_def(Stdlib.fsta),self#constrctx"Ptop_def"[Stdlib.snda])|Ptop_dira->leta=self#toplevel_directivectxain(Ptop_dir(Stdlib.fsta),self#constrctx"Ptop_dir"[Stdlib.snda])methodtoplevel_directive:'ctx->toplevel_directive->toplevel_directive*'res=functx{pdir_name;pdir_arg;pdir_loc}->letpdir_name=self#locself#stringctxpdir_nameinletpdir_arg=self#optionself#directive_argumentctxpdir_arginletpdir_loc=self#locationctxpdir_locin({pdir_name=Stdlib.fstpdir_name;pdir_arg=Stdlib.fstpdir_arg;pdir_loc=Stdlib.fstpdir_loc;},self#recordctx[("pdir_name",Stdlib.sndpdir_name);("pdir_arg",Stdlib.sndpdir_arg);("pdir_loc",Stdlib.sndpdir_loc);])methoddirective_argument:'ctx->directive_argument->directive_argument*'res=functx{pdira_desc;pdira_loc}->letpdira_desc=self#directive_argument_descctxpdira_descinletpdira_loc=self#locationctxpdira_locin({pdira_desc=Stdlib.fstpdira_desc;pdira_loc=Stdlib.fstpdira_loc;},self#recordctx[("pdira_desc",Stdlib.sndpdira_desc);("pdira_loc",Stdlib.sndpdira_loc);])methoddirective_argument_desc:'ctx->directive_argument_desc->directive_argument_desc*'res=functxx->matchxwith|Pdir_stringa->leta=self#stringctxain(Pdir_string(Stdlib.fsta),self#constrctx"Pdir_string"[Stdlib.snda])|Pdir_int(a,b)->leta=self#stringctxainletb=self#optionself#charctxbin(Pdir_int(Stdlib.fsta,Stdlib.fstb),self#constrctx"Pdir_int"[Stdlib.snda;Stdlib.sndb])|Pdir_identa->leta=self#longidentctxain(Pdir_ident(Stdlib.fsta),self#constrctx"Pdir_ident"[Stdlib.snda])|Pdir_boola->leta=self#boolctxain(Pdir_bool(Stdlib.fsta),self#constrctx"Pdir_bool"[Stdlib.snda])methodcases:'ctx->cases->cases*'res=self#listself#caseend[@@@end]