package Ġorg . elixir _ lang . code _ insight . line _ marker _ provider Ċ Ċ import Ġcom . intellij . code Highlighting . Pass Ċ import Ġcom . intellij . code Insight . daemon . Daemon Code Analyzer Settings Ċ import Ġcom . intellij . code Insight . daemon . Line Marker Info Ċ import Ġcom . intellij . code Insight . daemon . Line Marker Provider Ċ import Ġcom . intellij . openapi . editor . colors . Code Insight Colors Ċ import Ġcom . intellij . openapi . editor . colors . Editor Colors Manager Ċ import Ġcom . intellij . openapi . editor . markup . G utter Icon Renderer Ċ import Ġcom . intellij . openapi . editor . markup . Separator Placement Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġcom . intellij . psi . Psi Poly Variant Reference Ċ import Ġcom . intellij . psi . impl . source . tree . Leaf Psi Element Ċ import Ġorg . elixir _ lang . psi . At Unqualified No Parent heses Call Ċ import Ġorg . elixir _ lang . psi . Call Definition Clause Ċ import Ġorg . elixir _ lang . psi . Call Definition Clause . name Ar ity Range Ċ import Ġorg . elixir _ lang . psi . Elixir Types Ċ import Ġorg . elixir _ lang . psi . call . Call Ċ import Ġorg . elixir _ lang . psi . impl . Elixir Psi Impl Util .* Ċ import Ġorg . elixir _ lang . psi . impl . sibling Expression Ċ import Ġorg . elixir _ lang . structure _ view . element . Call Definition Specification . Companion . module AttributeName Ar ity Ċ import Ġorg . elixir _ lang . structure _ view . element . Call Definition Specification . Companion . specification Ċ import Ġorg . elixir _ lang . structure _ view . element . Call Definition Specification . Companion . specification Type Ċ Ċ class ĠCall Definition Ġ: ĠLine Marker Provider Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġcollect Slow Line Markers ( elements : ĠList < Psi Element >, Ġresult : ĠCollection < Line Marker Info <* >>) Ġ{} ĊĊĠĠĠ Ġoverride Ġfun Ġget Line Marker Info ( element : ĠPsi Element ): ĠLine Marker Info < *> ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( daemon Code Analyzer Settings . SHOW _ METHOD _ SEPAR ATORS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( element ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAt Unqualified No Parent heses Call < *> Ġ-> Ġget Line Marker Info ( element ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠCall Ġ-> Ġget Line Marker Info ( element ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġdaemon Code Analyzer Settings : ĠDa emon Code Analyzer Settings Ġ= ĠDa emon Code Analyzer Settings . getInstance () ĊĠĠĠ Ġprivate Ġval Ġeditor Colors Manager : ĠEditor Colors Manager Ġ= ĠEditor Colors Manager . getInstance () ĊĊĠĠĠ Ġprivate Ġfun Ġcall Definition Separator ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġat Unqualified No Parent heses Call : ĠAt Unqualified No Parent heses Call < *> ĊĠĠĠ Ġ): ĠLine Marker Info < *> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġleaf Psi Element Ġ= Ġat Unqualified No Parent heses Call ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. at Identifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. node ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. find Child ByType ( Elixir Types . IDENTIFIER _ TOKEN ) Ġas ĠLeaf Psi Element ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġerror (" At Unqualified No Parent heses Call Ġ(" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġat Unqualified No Parent heses Call . text Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ") Ġdoes Ġnot Ġhave Ġan ĠToken izer Ġtoken ") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcall Definition Separator ( leaf Psi Element ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcall Definition Separator ( psi Element : ĠPsi Element ): ĠLine Marker Info < *> Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLine Marker Info ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpsi Element , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpsi Element . text Range , Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPass . UPDATE _ ALL , Ġnull , Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG utter Icon Renderer . Alignment . RIGHT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġseparator Color Ġ= Ġeditor Colors Manager . global Scheme . getColor ( Code Insight Colors . METHOD _ SEPAR ATORS _ COLOR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġseparator Placement Ġ= ĠSe parator Placement . TOP ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Line Marker Info ( at Unqualified No Parent heses Call : ĠAt Unqualified No Parent heses Call < *> ): ĠLine Marker Info < *> ? Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġline Marker Info : ĠLine Marker Info < *> ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġval Ġmodule AttributeName Ġ= Ġmodule AttributeName ( at Unqualified No Parent heses Call ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( module AttributeName Ġ== Ġ"@ doc ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirst In Group Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġat Unqualified No Parent heses Call ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sibling Expression ( PREVIOUS _ SI BL ING ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. let Ġ{ Ġit Ġas ? ĠAt Unqualified No Parent heses Call < *> } ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġprevious Module Attribute Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprevious Module AttributeName Ġ= Ġmodule AttributeName ( previous Module Attribute !! ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( previous Module AttributeName Ġ== Ġ"@ spec ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodule AttributeName Ar ity ( previous Module Attribute )?. let Ġ{ Ġmodule AttributeName Ar ity Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsibling Call Definition Clause ( at Unqualified No Parent heses Call , ĠNEXT _ SI BL ING )?. let Ġ{ Ġnext Sibling Call Definition Clause Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ar ity Range ( next Sibling Call Definition Clause )?. let Ġ{ Ġname Ar ity Range Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġar ity Range Ġ= Ġname Ar ity Range . arity Range ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( module AttributeName Ar ity . arity Ġin Ġar ity Range ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthe Ġprevious Ġspec Ġis Ġpart Ġof Ġthe Ġgroup ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( first In Group ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Marker Info Ġ= Ġcall Definition Separator ( at Unqualified No Parent heses Call ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( module AttributeName Ġ== Ġ"@ spec ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprevious Expression Ġ= Ġat Unqualified No Parent heses Call . sibling Expression ( PREVIOUS _ SI BL ING ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġfirst In Group Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( previous Expression Ġis ĠAt Unqualified No Parent heses Call <* >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprevious Module Attribute Ġ= Ġprevious Expression Ġas ĠAt Unqualified No Parent heses Call < *> ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprevious Module AttributeName Ġ= Ġmodule AttributeName ( previous Module Attribute !! ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( previous Module AttributeName Ġ== Ġ"@ doc ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirst In Group Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( previous Module AttributeName Ġ== Ġ"@ spec ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmodule AttributeName Ar ity Ġ= Ġmodule AttributeName Ar ity ( at Unqualified No Parent heses Call ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( module AttributeName Ar ity Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodule AttributeName Ar ity ( previous Module Attribute )?. let Ġ{ Ġprevious Module AttributeName Ar ity Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġname Ġmatch , Ġnow Ġcheck Ġif Ġthe Ġar ities Ġmatch . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( module AttributeName Ar ity . arity Ġ== Ġprevious Module AttributeName Ar ity . arity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmodule Attribute Ar ity Ġ= Ġmodule AttributeName Ar ity . arity ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprevious Module Attribute Ar ity Ġ= Ġprevious Module AttributeName Ar ity . arity ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( module Attribute Ar ity Ġ== Ġprevious Module Attribute Ar ity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* Ġsame Ġar ity Ġwith Ġdifferent Ġpattern Ġis Ġsame Ġfunction , Ġso Ġthe Ġprevious Ġ@ spec Ġshould ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Ġif Ġit Ġis Ġfirst Ġbecause Ġthis Ġone Ġisn 't Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirst In Group Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* Ġsame Ġname , Ġbut Ġdifferent Ġar ity Ġneeds Ġto Ġdetermine Ġif Ġthe Ġcall Ġdefinition Ġhas Ġan ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġar ity Ġrange . Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspecification ( at Unqualified No Parent heses Call )?. let Ġ{ Ġspecification Type ( it ) Ġ} ?. reference ?. let Ġ{ Ġreference Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresolved List Ġ= Ġif Ġ( reference Ġis ĠPsi Poly Variant Reference ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresolve Results Ġ= Ġreference . multi Resolve ( false ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( resolve Results . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresolve Results . map Ġ{ Ġit . element !! Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresolved Ġ= Ġreference . resolve () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( resolved Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( resolved ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( resolved List Ġ!= Ġnull Ġ&& Ġresolved List . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirst In Group Ġ= Ġresolved List . filter Is Instance < Call >(). none Ġ{ Ġresolved Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ar ity Range ( resolved )?. let Ġ{ Ġ(_, Ġresolved Ar ity Range ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthe Ġcurrent Ġ@ spec Ġand Ġthe Ġprevious Ġ@ spec Ġapply Ġto Ġthe Ġsame Ġcall Ġdefinition Ġclause ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodule Attribute Ar ity Ġin Ġresolved Ar ity Range Ġ&& Ġprevious Module Attribute Ar ity Ġin Ġresolved Ar ity Range ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġspecification ( at Unqualified No Parent heses Call )?. let Ġ{ Ġspecification Type ( it ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype ?. reference ?. let Ġ{ Ġit Ġas ? ĠPsi Poly Variant Reference Ġ} ?. let Ġ{ Ġreference Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresolve Results Ġ= Ġreference . multi Resolve ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontaining File Ġ= Ġtype . containing File ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirst In Group Ġ= Ġresolve Results . map NotNull Ġ{ Ġit . element Ġ}. none Ġ{ Ġelement Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement . containing File Ġ== Ġcontaining File Ġ&& Ġelement . text Offset Ġ< Ġtype . text Offset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( first In Group ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Marker Info Ġ= Ġcall Definition Separator ( at Unqualified No Parent heses Call ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġline Marker Info ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Line Marker Info ( call : ĠCall ): ĠLine Marker Info < *> ? Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġline Marker Info : ĠLine Marker Info < *> ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Call Definition Clause .` is `( call )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprevious Call Definition Clause Ġ= Ġsibling Call Definition Clause ( call , ĠPRE V IOUS _ SI BL ING ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġfirst Clause : ĠBoolean ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Clause Ġ= Ġif Ġ( previous Call Definition Clause Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcall Name Ar ity Range Ġ= Ġname Ar ity Range ( call ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( call Name Ar ity Range Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprevious Name Ar ity Range Ġ= Ġname Ar ity Range ( previous Call Definition Clause ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprevious Name Ar ity Range Ġ== Ġnull Ġ|| Ġprevious Name Ar ity Range Ġ!= Ġcall Name Ar ity Range ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( first Clause ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprevious Expression Ġ= Ġprevious Sibling Expression ( call ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( previous Expression Ġis ĠAt Unqualified No Parent heses Call <* >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprevious Module Attribute Definition Ġ= Ġprevious Expression Ġas ĠAt Unqualified No Parent heses Call < *> ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmodule AttributeName Ġ= Ġmodule AttributeName ( previous Module Attribute Definition !! ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( module AttributeName Ġ== Ġ"@ doc ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Clause Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( module AttributeName Ġ== Ġ"@ spec ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcall Name Ar ity Range Ġ= Ġname Ar ity Range ( call ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( call Name Ar ity Range Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġspec Name Ar ity Ġ= Ġmodule AttributeName Ar ity ( previous Module Attribute Definition ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( spec Name Ar ity Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġspec Ar ity Ġ= Ġspec Name Ar ity . arity ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcall Ar ity Range Ġ= Ġcall Name Ar ity Range . arity Range ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Clause Ġ= Ġspec Ar ity Ġ! in Ġcall Ar ity Range ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( first Clause ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Marker Info Ġ= Ġcall Definition Separator ( call ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġline Marker Info ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsibling Call Definition Clause ( element : ĠPsi Element , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfunction : ĠFunction 1 < Psi Element , ĠPsi Element >): ĠCall ? Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġexpression : ĠPsi Element ? Ġ= Ġelement ĊĠĠĠĠĠĠĠ Ġvar Ġsibling Call Definition Clause : ĠCall ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( expression Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpression Ġ= Ġexpression . sibling Expression ( function ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( expression Ġis ĠCall Ġ&& ĠCall Definition Clause .` is `( expression )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsibling Call Definition Clause Ġ= Ġexpression ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġsibling Call Definition Clause ĊĠĠĠ Ġ} Ċ } Ċ