package Ġme . ser ce . solid ity . lang . psi . impl Ċ Ċ import Ġcom . intellij . lang . AST Node Ċ import Ġcom . intellij . openapi . util . Recursion Manager Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġcom . intellij . psi . stubs . I Stub ElementType Ċ import Ġcom . intellij . psi . util . Cached Value Provider Ċ import Ġcom . intellij . psi . util . Cached Values Manager Ċ import Ġcom . intellij . psi . util . Psi Modification Tracker Ċ import Ġme . ser ce . solid ity . first Instance Ċ import Ġme . ser ce . solid ity . ide . Solid ity Icons Ċ import Ġme . ser ce . solid ity . lang . core . Solid ity Token Types .* Ċ import Ġme . ser ce . solid ity . lang . psi .* Ċ import Ġme . ser ce . solid ity . lang . resolve . Sol Resolver Ċ import Ġme . ser ce . solid ity . lang . resolve . ref .* Ċ import Ġme . ser ce . solid ity . lang . stubs .* Ċ import Ġme . ser ce . solid ity . lang . types .* Ċ import Ġjava . util .* Ċ import Ġjavax . naming . Operation NotSupportedException Ċ Ċ open Ġclass ĠSol Import Path Element Ġ: ĠSol Stub bed Named Element Impl < Sol Import Path Def Stub >, ĠSol Reference Element Ġ{ ĊĠ Ġconstructor ( node : ĠAST Node ) Ġ: Ġsuper ( node ) ĊĠ Ġconstructor ( stub : ĠSol Import Path Def Stub , Ġnode Type : ĠI Stub ElementType < *, Ġ* >) Ġ: Ġsuper ( stub , Ġnode Type ) ĊĊĠ Ġoverride Ġval Ġreference Name Element : ĠPsi Element ĊĠĠĠ Ġget () Ġ= Ġfind Child ByType ( STRING LITERAL ) !! ĊĠ Ġoverride Ġval Ġreference Name : ĠString ĊĠĠĠ Ġget () Ġ= Ġreference Name Element . text ĊĊĠ Ġoverride Ġfun Ġget Reference () Ġ= ĠSol Import Path Reference ( this ) Ċ } Ċ Ċ open Ġclass ĠSol Import Alias Mixin ( node : ĠAST Node ) Ġ: ĠSol Named Element Impl ( node ) Ċ Ċ abstract Ġclass ĠSol Enum Item Impl Mixin Ġ: ĠSol Stub bed Named Element Impl < Sol Enum Def Stub >, ĠSol Enum Definition Ġ{ ĊĠ Ġconstructor ( node : ĠAST Node ) Ġ: Ġsuper ( node ) ĊĠ Ġconstructor ( stub : ĠSol Enum Def Stub , Ġnode Type : ĠI Stub ElementType < *, Ġ* >) Ġ: Ġsuper ( stub , Ġnode Type ) ĊĊĠ Ġoverride Ġval Ġcontract : ĠSol Contract Definition ĊĠĠĠ Ġget () Ġ= Ġan cestors . first Instance () ĊĊĠ Ġoverride Ġfun Ġget Icon ( flags : ĠInt ) Ġ= ĠSolid ity Icons . ENUM Ċ } Ċ Ċ abstract Ġclass ĠSol EnumValue Mixin ( node : ĠAST Node ) Ġ: ĠSol Named Element Impl ( node ), ĠSol EnumValue Ġ{ ĊĠ Ġoverride Ġval Ġcontract : ĠSol Contract Definition ĊĠĠĠ Ġget () Ġ= Ġan cestors . first Instance () ĊĊĠ Ġoverride Ġfun Ġresolve Element (): ĠSol Named Element ? Ġ= Ġthis ĊĊĠ Ġoverride Ġfun Ġparse Type (): ĠSol Type Ġ{ ĊĠĠĠ Ġval Ġdef Ġ= Ġparent OfType < Sol Enum Definition >() ĊĠĠĠ Ġreturn Ġdef ?. let Ġ{ ĠSol Enum ( it ) Ġ} Ġ?: ĠSol Unknown ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġget Possible Usage ( context Type : ĠContext Type ) Ġ= ĠUsage . VARIABLE Ċ } Ċ Ċ abstract Ġclass ĠSol Contract Or Lib Mixin Ġ: ĠSol Stub bed Named Element Impl < Sol Contract Or Lib Def Stub >, ĠSol Contract Definition Ġ{ ĊĠ Ġoverride Ġval Ġsup ers : ĠList < Sol User Defined TypeName > ĊĠĠĠ Ġget () Ġ= Ġinheritance Specifier List ĊĠĠĠĠĠ Ġ. map NotNull Ġ{ Ġit . user Defined TypeName Ġ} ĊĊĠ Ġoverride Ġval Ġcollect Sup ers : ĠCollection < Sol User Defined TypeName > ĊĠĠĠ Ġget () Ġ= ĠRe cur sion Manager . do Prevent ing Recursion ( this , Ġtrue ) Ġ{ ĊĠĠĠĠĠ ĠCached Values Manager . get Cached Value ( this ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollected Sup ers Ġ= ĠLinked HashSet < Sol User Defined TypeName >() ĊĠĠĠĠĠĠĠ Ġcollected Sup ers . addAll ( sup ers ) ĊĠĠĠĠĠĠĠ Ġcollected Sup ers . addAll ( ĊĠĠĠĠĠĠĠĠĠ Ġsup ers . map NotNull Ġ{ Ġit . reference ?. resolve () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Is Instance < Sol Contract Or Lib Element >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġit . collect Sup ers Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠCached Value Provider . Result . create ( collected Sup ers , ĠPsi Modification Tracker . MO DIF ICATION _ COUNT ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġ?: Ġempty List () ĊĊĠ Ġconstructor ( node : ĠAST Node ) Ġ: Ġsuper ( node ) ĊĠ Ġconstructor ( stub : ĠSol Contract Or Lib Def Stub , Ġnode Type : ĠI Stub ElementType < *, Ġ* >) Ġ: Ġsuper ( stub , Ġnode Type ) ĊĊĠ Ġoverride Ġfun Ġget Icon ( flags : ĠInt ) Ġ= ĠSolid ity Icons . CONTRACT ĊĊĠ Ġoverride Ġfun Ġparse Parameters (): ĠList < Pair < String ?, ĠSol Type >> Ġ{ ĊĠĠĠ Ġreturn ĠlistOf ( Pair ( null , ĠSol Address )) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġparse Type (): ĠSol Type Ġ{ ĊĠĠĠ Ġreturn ĠSol Contract ( this ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġresolve Element () Ġ= Ġthis ĊĠ Ġoverride Ġval Ġcallable Priority Ġ= Ġ 1 0 0 0 Ċ } Ċ Ċ abstract Ġclass ĠSol Constructor Def Mixin ( node : ĠAST Node ) Ġ: ĠSol Element Impl ( node ), ĠSol Constructor Definition Ġ{ ĊĠ Ġoverride Ġval Ġreference Name Element : ĠPsi Element ĊĠĠĠ Ġget () Ġ= Ġthis ĊĊĠ Ġoverride Ġval Ġreference Name : ĠString ĊĠĠĠ Ġget () Ġ= Ġ" constructor " ĊĊĠ Ġoverride Ġfun ĠsetName ( name : ĠString ): ĠPsi Element Ġ{ ĊĠĠĠ Ġthrow ĠOperation NotSupportedException (" construct ors Ġdon 't Ġhave Ġname ") ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġget Reference (): ĠSol Reference ? Ġ= Ġreferences . first OrNull () ĊĊĠ Ġoverride Ġfun Ġget References (): ĠArray < Sol Reference > Ġ{ ĊĠĠĠ Ġreturn Ġfind Children ByType < Sol Modifier Invocation >( MODI FIER _ IN VOC ATION ) ĊĠĠĠĠĠ Ġ. map Ġ{ ĠSol Modifier Reference ( this , Ġit ) Ġ}. to Typed Array () ĊĠ Ġ} Ċ } Ċ Ċ abstract Ġclass ĠSol Function Def Mixin Ġ: ĠSol Stub bed Named Element Impl < Sol Function Def Stub >, ĠSol Function Definition Ġ{ ĊĠ Ġoverride Ġval Ġreference Name Element : ĠPsi Element ĊĠĠĠ Ġget () Ġ= Ġfind Child ByType ( IDENTIFIER ) !! ĊĊĠ Ġoverride Ġval Ġreference Name : ĠString ĊĠĠĠ Ġget () Ġ= Ġreference Name Element . text ĊĊĠ Ġoverride Ġval Ġmodifiers : ĠList < Sol Modifier Invocation > ĊĠĠĠ Ġget () Ġ= Ġfind Children ByType ( MODI FIER _ IN VOC ATION ) ĊĊĠ Ġoverride Ġval Ġparameters : ĠList < Sol Parameter Def > ĊĠĠĠ Ġget () Ġ= Ġfind Child ByType < Sol Parameter List >( PARAMETER _ LIST ) ĊĠĠĠĠĠ Ġ? . children ĊĠĠĠĠĠ Ġ? . filter Is Instance ( Sol Parameter Def :: class . java ) ĊĠĠĠĠĠ Ġ?: Ġempty List () ĊĊĠ Ġoverride Ġfun Ġparse Parameters (): ĠList < Pair < String ?, ĠSol Type >> Ġ{ ĊĠĠĠ Ġreturn Ġparameters . map Ġ{ Ġit . identifier ?. text Ġto Ġget Sol Type ( it . typeName ) Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġval Ġcallable Priority Ġ= Ġ 0 ĊĊĠ Ġoverride Ġfun Ġparse Type (): ĠSol Type Ġ{ ĊĠĠĠ Ġreturn Ġthis . returns . let Ġ{ Ġlist Ġ-> ĊĠĠĠĠĠ Ġwhen Ġ( list ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnull Ġ-> ĠSol Unknown ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġlist . parameter Def List . let Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġget Sol Type ( it [ 0 ]. typeName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠSol Tuple ( it . map Ġ{ Ġdef Ġ-> Ġget Sol Type ( def . typeName ) Ġ}) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġval Ġvisibility ĊĠĠĠ Ġget () Ġ= Ġfunction Visibility Specifier List ĊĠĠĠĠĠ Ġ. map Ġ{ Ġit . text . toUpperCase () Ġ} ĊĠĠĠĠĠ Ġ. map NotNull Ġ{ Ġsafe ValueOf < Visibility >( it ) Ġ} ĊĠĠĠĠĠ Ġ. first OrNull () ĊĠĠĠĠĠ Ġ?: ĠVisibility . PUBLIC ĊĊĠ Ġoverride Ġfun Ġget Possible Usage ( context Type : ĠContext Type ) Ġ= ĊĠĠĠ Ġif Ġ( is Possible ToUse ( context Type )) ĊĠĠĠĠĠ ĠUsage . CALL ABLE ĊĠĠĠ Ġelse ĊĠĠĠĠĠ Ġnull ĊĊĠ Ġprivate Ġfun Ġis Possible ToUse ( context Type : ĠContext Type ): ĠBoolean Ġ{ ĊĠĠĠ Ġval Ġvisibility Ġ= Ġthis . visibility ĊĠĠĠ Ġreturn Ġvisibility Ġ!= ĠVisibility . PRIVATE ĊĠĠĠĠĠ Ġ&& Ġ!( visibility Ġ== ĠVisibility . EXTERNAL Ġ&& Ġcontext Type Ġ== ĠContext Type . SUPER ) ĊĠĠĠĠĠ Ġ&& Ġ!( visibility Ġ== ĠVisibility . INTERNAL Ġ&& Ġcontext Type Ġ== ĠContext Type . EXTERNAL ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġresolve Element () Ġ= Ġthis ĊĊĠ Ġoverride Ġval Ġreturns : ĠSol Parameter List ? ĊĠĠĠ Ġget () Ġ= Ġif Ġ( parameter List List . size Ġ== Ġ 2 ) Ġ{ ĊĠĠĠĠĠ Ġparameter List List [ 1 ] ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġnull ĊĠĠĠ Ġ} ĊĊĠ Ġoverride Ġval Ġcontract : ĠSol Contract Definition ĊĠĠĠ Ġget () Ġ= Ġthis . ance stors . as Sequence () ĊĠĠĠĠĠ Ġ. filter Is Instance < Sol Contract Definition >() ĊĠĠĠĠĠ Ġ. first () ĊĊĠ Ġoverride Ġval Ġis Constructor : ĠBoolean ĊĠĠĠ Ġget () Ġ= Ġcontract . name Ġ== Ġname ĊĊĠ Ġconstructor ( node : ĠAST Node ) Ġ: Ġsuper ( node ) ĊĠ Ġconstructor ( stub : ĠSol Function Def Stub , Ġnode Type : ĠI Stub ElementType < *, Ġ* >) Ġ: Ġsuper ( stub , Ġnode Type ) ĊĊĠ Ġoverride Ġfun Ġget Reference () Ġ= Ġreferences . first OrNull () ĊĊĠ Ġoverride Ġfun Ġget References (): ĠArray < Sol Reference > Ġ{ ĊĠĠĠ Ġreturn Ġmodifiers . map Ġ{ ĠSol Modifier Reference ( this , Ġit ) Ġ}. to Typed Array () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġget Icon ( flags : ĠInt ) Ġ= ĠSolid ity Icons . FUNCTION Ċ } Ċ Ċ abstract Ġclass ĠSol Modifier Def Mixin Ġ: ĠSol Stub bed Named Element Impl < Sol Modifier Def Stub >, ĠSol Modifier Definition Ġ{ ĊĠ Ġoverride Ġval Ġcontract : ĠSol Contract Definition ĊĠĠĠ Ġget () Ġ= Ġan cestors . first Instance () ĊĊĠ Ġconstructor ( node : ĠAST Node ) Ġ: Ġsuper ( node ) ĊĠ Ġconstructor ( stub : ĠSol Modifier Def Stub , Ġnode Type : ĠI Stub ElementType < *, Ġ* >) Ġ: Ġsuper ( stub , Ġnode Type ) ĊĊĠ Ġoverride Ġfun Ġget Icon ( flags : ĠInt ) Ġ= ĠSolid ity Icons . FUNCTION Ċ } Ċ Ċ abstract Ġclass ĠSol State Var Decl Mixin Ġ: ĠSol Stub bed Named Element Impl < Sol State Var Decl Stub >, ĠSol State Variable Declaration Ġ{ ĊĠ Ġconstructor ( node : ĠAST Node ) Ġ: Ġsuper ( node ) ĊĠ Ġconstructor ( stub : ĠSol State Var Decl Stub , Ġnode Type : ĠI Stub ElementType < *, Ġ* >) Ġ: Ġsuper ( stub , Ġnode Type ) ĊĊĠ Ġoverride Ġfun Ġget Icon ( flags : ĠInt ) Ġ= ĠSolid ity Icons . STATE _ VAR ĊĊĠ Ġoverride Ġfun Ġparse Parameters (): ĠList < Pair < String ?, ĠSol Type >> Ġ= Ġempty List () ĊĊĠ Ġoverride Ġfun Ġparse Type (): ĠSol Type Ġ= Ġget Sol Type ( typeName ) ĊĊĠ Ġoverride Ġfun Ġget Possible Usage ( context Type : ĠContext Type ): ĠUsage ? Ġ{ ĊĠĠĠ Ġval Ġvisibility Ġ= Ġthis . visibility ĊĠĠĠ Ġreturn Ġif Ġ( context Type Ġ== ĠContext Type . SUPER ) ĊĠĠĠĠĠ ĠUsage . VARIABLE ĊĠĠĠ Ġelse Ġif Ġ( context Type Ġ== ĠContext Type . EXTERNAL Ġ&& Ġvisibility Ġ== ĠVisibility . PUBLIC ) ĊĠĠĠĠĠ ĠUsage . CALL ABLE ĊĠĠĠ Ġelse ĊĠĠĠĠĠ Ġnull ĊĠ Ġ} ĊĊĠ Ġoverride Ġval Ġcallable Priority Ġ= Ġ 0 ĊĊĠ Ġoverride Ġfun Ġresolve Element () Ġ= Ġthis ĊĊĠ Ġoverride Ġval Ġvisibility ĊĠĠĠ Ġget () Ġ= Ġvisibility Modifier ?. text ?. let Ġ{ Ġsafe ValueOf < Visibility >( it . toUpperCase ()) Ġ} Ġ?: ĠVisibility . INTERNAL Ċ } Ċ Ċ abstract Ġclass ĠSol Struct Def Mixin Ġ: ĠSol Stub bed Named Element Impl < Sol Struct Def Stub >, ĠSol Struct Definition , ĠSol Callable Element Ġ{ ĊĠ Ġconstructor ( node : ĠAST Node ) Ġ: Ġsuper ( node ) ĊĠ Ġconstructor ( stub : ĠSol Struct Def Stub , Ġnode Type : ĠI Stub ElementType < *, Ġ* >) Ġ: Ġsuper ( stub , Ġnode Type ) ĊĊĠ Ġoverride Ġfun Ġget Icon ( flags : ĠInt ) Ġ= ĠSolid ity Icons . STRUCT ĊĊĠ Ġoverride Ġfun Ġparse Parameters (): ĠList < Pair < String ?, ĠSol Type >> Ġ{ ĊĠĠĠ Ġreturn Ġvariable Declaration List ĊĠĠĠĠĠ Ġ. map Ġ{ Ġit . identifier ?. text Ġto Ġget Sol Type ( it . typeName ) Ġ} ĊĊĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġparse Type (): ĠSol Type Ġ{ ĊĠĠĠ Ġreturn ĠSol Struct ( this ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġresolve Element () Ġ= Ġthis ĊĊĠ Ġoverride Ġval Ġcallable Priority Ġ= Ġ 1 0 0 0 Ċ } Ċ Ċ abstract Ġclass ĠSol Function Call Mixin ( node : ĠAST Node ) Ġ: ĠSol Named Element Impl ( node ), ĠSol Function Call Element , ĠSol Function Call Expression Ġ{ ĊĠ Ġoverride Ġfun Ġget Base And Reference Name Element (): ĠPair < Sol Expression ?, ĠPsi Element > Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( val Ġexpr Ġ= Ġexpression ) Ġ{ ĊĠĠĠĠĠ Ġis ĠSol Primary Expression Ġ-> ĊĠĠĠĠĠĠĠ Ġexpr . var Literal ?. let Ġ{ ĠPair ( null , Ġit ) Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ?: Ġexpr . element ary TypeName ?. let Ġ{ ĠPair ( null , Ġit ) Ġ} !! ĊĠĠĠĠĠ Ġis ĠSol Member Access Expression Ġ-> ĊĠĠĠĠĠĠĠ ĠPair ( expr . expression , Ġexpr . identifier !! ) ĊĠĠĠĠĠ Ġis ĠSol Function Call Expression Ġ-> ĊĠĠĠĠĠĠĠ ĠPair ( expr . expression , Ġexpr . firstChild ) ĊĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalStateException (" unable Ġto Ġextract Ġreference Ġname Ġelement Ġfrom Ġ$ this ") ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġval Ġexpression : ĠSol Expression ? ĊĠĠĠ Ġget () Ġ= Ġexpression List [ 0 ] ĊĊĠ Ġoverride Ġval Ġreference Name Element : ĠPsi Element ĊĠĠĠ Ġget () Ġ= Ġget Base And Reference Name Element (). second ĊĊĠ Ġoverride Ġval Ġreference Name : ĠString ĊĠĠĠ Ġget () Ġ= Ġreference Name Element . text ĊĊĠ Ġoverride Ġfun ĠgetName (): ĠString ? Ġ= Ġreference Name ĊĊĠ Ġoverride Ġfun Ġget Reference (): ĠSol Reference Ġ= ĠSol Function Call Reference ( this Ġas ĠSol Function Call Expression ) Ċ } Ċ Ċ abstract Ġclass ĠSol Modifier Invocation Mixin ( node : ĠAST Node ) Ġ: ĠSol Named Element Impl ( node ), ĠSol Modifier Invocation Element Ġ{ ĊĊĠ Ġoverride Ġval Ġreference Name Element : ĠPsi Element ĊĠĠĠ Ġget () Ġ= Ġthis . var Literal ĊĠ Ġoverride Ġval Ġreference Name : ĠString ĊĠĠĠ Ġget () Ġ= Ġthis . var Literal . text ĊĊĠ Ġoverride Ġfun Ġget Reference (): ĠSol Reference Ġ= ĠSol Modifier Reference ( this , Ġthis ) Ċ } Ċ Ċ abstract Ġclass ĠSol Var Literal Mixin ( node : ĠAST Node ) Ġ: ĠSol Named Element Impl ( node ), ĠSol Var Literal Ġ{ ĊĠ Ġoverride Ġval Ġreference Name Element : ĠPsi Element ĊĠĠĠ Ġget () Ġ= Ġfind Child ByType ( IDENTIFIER ) !! ĊĊĠ Ġoverride Ġval Ġreference Name : ĠString ĊĠĠĠ Ġget () Ġ= Ġreference Name Element . text ĊĊĠ Ġoverride Ġfun Ġget Reference (): ĠSol Reference Ġ= ĠSol Var Literal Reference ( this ) Ċ } Ċ Ċ open Ġclass ĠSol Declaration Item Mixin ( node : ĠAST Node ) Ġ: ĠSol Named Element Impl ( node ) Ċ Ċ open Ġclass ĠSol Typed Declaration Item Mixin ( node : ĠAST Node ) Ġ: ĠSol Named Element Impl ( node ) Ċ Ċ abstract Ġclass ĠSol Variable Declaration Mixin ( node : ĠAST Node ) Ġ: ĠSol Variable Declaration , ĠSol Named Element Impl ( node ) Ċ Ċ open Ġclass ĠSol Parameter Def Mixin ( node : ĠAST Node ) Ġ: ĠSol Named Element Impl ( node ) Ċ Ċ abstract Ġclass ĠSol User Defined TypeName Impl Mixin Ġ: ĠSol Stub bed Element Impl < Sol Type Ref Stub >, ĠSol User Defined TypeName Ġ{ ĊĠ Ġconstructor ( node : ĠAST Node ) Ġ: Ġsuper ( node ) ĊĊĠ Ġconstructor ( stub : ĠSol Type Ref Stub , Ġnode Type : ĠI Stub ElementType < *, Ġ* >) Ġ: Ġsuper ( stub , Ġnode Type ) ĊĊĠ Ġoverride Ġfun Ġget Reference (): ĠSol Reference Ġ= ĠSol User Defined TypeName Reference ( this ) ĊĊĠ Ġoverride Ġval Ġreference Name Element : ĠPsi Element ĊĠĠĠ Ġget () Ġ= Ġfind Child ByType ( IDENTIFIER ) !! ĊĊĠ Ġoverride Ġfun Ġfind Identifiers (): ĠList < Psi Element > Ġ= ĊĠĠĠ Ġfind Children ByType ( IDENTIFIER ) ĊĊĠ Ġoverride Ġval Ġreference Name : ĠString ĊĠĠĠ Ġget () Ġ= Ġreference Name Element . text ĊĊĠ Ġoverride Ġfun ĠgetParent (): ĠPsi Element ? Ġ= Ġparent By Stub ĊĊĠ Ġoverride Ġfun ĠgetName (): ĠString ? Ġ{ ĊĠĠĠ Ġreturn Ġreference Name Element . text ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠsetName ( name : ĠString ): ĠSol User Defined TypeName Impl Mixin Ġ{ ĊĠĠĠ Ġreference Name Element . replace ( Sol Psi Factory ( project ). create Identifier ( name )) ĊĠĠĠ Ġreturn Ġthis ĊĠ Ġ} Ċ } Ċ Ċ abstract Ġclass ĠSol Member Access Element ( node : ĠAST Node ) Ġ: ĠSol Named Element Impl ( node ), ĠSol Member Access Expression Ġ{ ĊĠ Ġoverride Ġval Ġreference Name Element : ĠPsi Element ĊĠĠĠ Ġget () Ġ= Ġfind Child ByType ( IDENTIFIER ) !! ĊĠ Ġoverride Ġval Ġreference Name : ĠString ĊĠĠĠ Ġget () Ġ= Ġreference Name Element . text ĊĊĠ Ġoverride Ġfun Ġget Reference () Ġ= ĠSol Member Access Reference ( this ) Ċ } Ċ Ċ abstract Ġclass ĠSol New Expression Element ( node : ĠAST Node ) Ġ: ĠSol Named Element Impl ( node ), ĠSol New Expression Ġ{ ĊĠ Ġoverride Ġval Ġreference Name Element : ĠPsi Element ĊĠĠĠ Ġget () Ġ= Ġfind Child ByType ( IDENTIFIER ) Ġ?: Ġfirst Child ĊĠ Ġoverride Ġval Ġreference Name : ĠString ĊĠĠĠ Ġget () Ġ= Ġreference Name Element . text ĊĊĠ Ġoverride Ġfun Ġget Reference () Ġ= ĠSol New Expression Reference ( this ) Ċ } Ċ Ċ abstract Ġclass ĠSol Event Def Mixin Ġ: ĠSol Stub bed Named Element Impl < Sol Event Def Stub >, ĠSol Event Definition , ĠSol Callable Element Ġ{ ĊĠ Ġconstructor ( node : ĠAST Node ) Ġ: Ġsuper ( node ) ĊĠ Ġconstructor ( stub : ĠSol Event Def Stub , Ġnode Type : ĠI Stub ElementType < *, Ġ* >) Ġ: Ġsuper ( stub , Ġnode Type ) ĊĊĠ Ġ// todo Ġadd Ġevent Ġargs Ġidentifiers ĊĠ Ġoverride Ġfun Ġparse Parameters (): ĠList < Pair < String ?, ĠSol Type >> Ġ{ ĊĠĠĠ Ġreturn Ġindexed Parameter List ?. typeName List ĊĠĠĠĠĠ Ġ? . map Ġ{ Ġnull Ġto Ġget Sol Type ( it ) Ġ} ĊĠĠĠĠĠ Ġ?: Ġempty List () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġparse Type (): ĠSol Type Ġ{ ĊĠĠĠ Ġreturn ĠSol Unknown ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġresolve Element () Ġ= Ġthis ĊĊĠ Ġoverride Ġval Ġcallable Priority Ġ= Ġ 1 0 0 0 Ċ } Ċ Ċ abstract Ġclass ĠSol Using For Mixin ( node : ĠAST Node ) Ġ: ĠSol Element Impl ( node ), ĠSol Using For Element Ġ{ ĊĠ Ġoverride Ġval Ġtype : ĠSol Type ? ĊĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠ Ġval Ġlist Ġ= Ġget TypeName List () ĊĠĠĠĠĠ Ġreturn Ġif Ġ( list . size Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġget Sol Type ( list [ 1 ]) ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġoverride Ġval Ġlibrary : ĠSol Contract Definition ĊĠĠĠ Ġget () Ġ= ĠSol Resolver . resolve TypeName Using Imports ( getType Name List ()[ 0 ] Ġas ĠSol User Defined TypeName ) ĊĠĠĠĠĠ Ġ. filter Is Instance < Sol Contract Definition >() ĊĠĠĠĠĠ Ġ. first () Ċ } Ċ