package Ġorg . ice 1 0 0 0 . tt . psi . cub ical tt Ċ Ċ import Ġcom . intellij . code Insight . lookup . Lookup Element Ċ import Ġcom . intellij . code Insight . lookup . Lookup Element Builder Ċ import Ġcom . intellij . lang . AST Node Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġcom . intellij . psi . Psi File Ċ import Ġcom . intellij . psi . stubs .* Ċ import Ġcom . intellij . psi . tree . I Stub File ElementType Ċ import Ġicons . Semantic Icons Ċ import Ġorg . ice 1 0 0 0 . tt . Cub ical TT Language Ċ import Ġorg . ice 1 0 0 0 . tt . psi . children With Le aves Ċ import Ġorg . ice 1 0 0 0 . tt . psi . cub ical tt . impl . Cub ical TT Data Impl Ċ import Ġorg . ice 1 0 0 0 . tt . psi . cub ical tt . impl . Cub ical TT Def Impl Ċ import Ġorg . ice 1 0 0 0 . tt . psi . cub ical tt . impl . Cub ical TT Label Impl Ċ import Ġorg . ice 1 0 0 0 . tt . psi . cub ical tt . impl . Cub ical TT Module Impl Ċ Ċ class ĠC ub ical TT File Stub ( file : ĠC ub ical TT File Impl ?) Ġ: ĠPsi File Stub Impl < Cub ical TT File Impl >( file ) Ġ{ Ċ ĉ override Ġfun ĠgetType () Ġ= ĠType Ċ ĉ comp anion Ġobject ĠType Ġ: ĠI Stub File ElementType < Psi File Stub Impl < Cub ical TT File Impl >>( Cub ical TT Language . INSTANCE ) Ġ{ Ċĉ ĉ override Ġfun Ġget Stub Version () Ġ= Ġ 1 Ċĉ ĉ override Ġfun Ġdeserialize ( data Stream : ĠStub InputStream , Ġparent Stub : ĠStub Element < *> ?) Ġ= ĠC ub ical TT File Stub ( null ) Ċĉ ĉ override Ġfun Ġserialize ( stub : ĠPsi File Stub Impl < Cub ical TT File Impl >, Ġdata Stream : ĠStub OutputStream ) Ġ= ĠUnit Ċĉ ĉ override Ġfun Ġget External Id () Ġ= Ġ" cub ical tt . file " Ċĉ ĉ override Ġfun Ġget Builder () Ġ= Ġobject Ġ: ĠDefault Stub Builder () Ġ{ Ċĉĉ ĉ override Ġfun Ġcreate Stub For File ( file : ĠPsi File ) Ġ= ĠC ub ical TT File Stub ( file Ġas ? ĠC ub ical TT File Impl ) Ċĉ ĉ } Ċ ĉ } Ċ } Ċ Ċ fun Ġfactory ( name : ĠString ): ĠC ub ical TT Stub Type < *, Ġ*> Ġ= Ġwhen Ġ( name ) Ġ{ Ċ ĉ " MODULE " Ġ-> ĠC ub ical TT Module Stub Type Ċ ĉ " DATA " Ġ-> ĠC ub ical TT Data Stub Type Ċ ĉ " LABEL " Ġ-> ĠC ub ical TT Label Stub Type Ċ ĉ " DEF " Ġ-> ĠC ub ical TT Def Stub Type Ċ ĉ else Ġ-> Ġerror (" Bad Ġstub Ġtype : Ġ$ name ") Ċ } Ċ Ċ abstract Ġclass ĠC ub ical TT Stub Type < Stub : ĠStub Element <* >, ĠPsi : ĠPsi Element >( Ċ ĉ debug Name : ĠString Ċ ) Ġ: ĠI Stub ElementType < Stub , ĠPsi >( debug Name , ĠC ub ical TT Language . INSTANCE ) Ġ{ Ċ ĉ // Ġ` toString ()` Ġreturns Ġ` debug Name ` Ċ ĉ override Ġfun Ġget External Id () Ġ= Ġ" cub ical tt .${ super . toString () }" Ċ } Ċ Ċ interface ĠC ub ical Completion Element Ġ{ Ċ ĉ val Ġlookup Element : ĠLookup Element Ċ } Ċ Ċ class ĠC ub ical TT Def Stub ( Ċ ĉ parent : ĠStub Element <* >, Ċ ĉ val Ġdecl Name : ĠString Ċ ) Ġ: ĠStub Base < Cub ical TT Def >( parent , ĠC ub ical TT Def Stub Type ), ĠStub Element < Cub ical TT Def >, ĠC ub ical Completion Element Ġ{ Ċ ĉ override Ġval Ġlookup Element Ġget () Ġ= ĠLookup Element Builder . create ( decl Name ). with Icon ( Semantic Icons . PIN K _ L AMBDA ) Ċ } Ċ Ċ class ĠC ub ical TT Label Stub ( Ċ ĉ parent : ĠStub Element <* >, Ċ ĉ val Ġlabel Name : ĠString Ċ ) Ġ: ĠStub Base < Cub ical TT Label >( parent , ĠC ub ical TT Label Stub Type ), ĠStub Element < Cub ical TT Label >, ĠC ub ical Completion Element Ġ{ Ċ ĉ override Ġval Ġlookup Element Ġget () Ġ= ĠLookup Element Builder . create ( label Name ). with Icon ( Semantic Icons . BLUE _ C ) Ċ } Ċ Ċ class ĠC ub ical TT Data Stub ( Ċ ĉ parent : ĠStub Element <* >, Ċ ĉ val Ġdata Name : ĠString Ċ ) Ġ: ĠStub Base < Cub ical TT Data >( parent , ĠC ub ical TT Data Stub Type ), ĠStub Element < Cub ical TT Data >, ĠC ub ical Completion Element Ġ{ Ċ ĉ override Ġval Ġlookup Element Ġget () Ġ= ĠLookup Element Builder . create ( data Name ). with Icon ( Semantic Icons . BLUE _ HO LE ) Ċ } Ċ Ċ class ĠC ub ical TT Module Stub ( Ċ ĉ parent : ĠStub Element <* >, Ċ ĉ val ĠmoduleName : ĠString Ċ ) Ġ: ĠStub Base < Cub ical TT Module >( parent , ĠC ub ical TT Module Stub Type ), ĠStub Element < Cub ical TT Module > Ċ Ċ object ĠC ub ical TT Module Stub Key Ġ: ĠString Stub Index Extension < Cub ical TT Module >() Ġ{ Ċ ĉ private Ġval ĠKEY Ġ= ĠStub Index Key . create Index Key < String , ĠC ub ical TT Module >( Cub ical TT Module Stub Type . external Id ) Ċ ĉ override Ġfun ĠgetKey () Ġ= ĠKEY Ċ } Ċ Ċ object ĠC ub ical TT Def Stub Key Ġ: ĠString Stub Index Extension < Cub ical TT Def >() Ġ{ Ċ ĉ private Ġval ĠKEY Ġ= ĠStub Index Key . create Index Key < String , ĠC ub ical TT Def >( Cub ical TT Def Stub Type . external Id ) Ċ ĉ override Ġfun ĠgetKey () Ġ= ĠKEY Ċ } Ċ Ċ object ĠC ub ical TT Label Stub Key Ġ: ĠString Stub Index Extension < Cub ical TT Label >() Ġ{ Ċ ĉ private Ġval ĠKEY Ġ= ĠStub Index Key . create Index Key < String , ĠC ub ical TT Label >( Cub ical TT Label Stub Type . external Id ) Ċ ĉ override Ġfun ĠgetKey () Ġ= ĠKEY Ċ } Ċ Ċ object ĠC ub ical TT Data Stub Key Ġ: ĠString Stub Index Extension < Cub ical TT Data >() Ġ{ Ċ ĉ private Ġval ĠKEY Ġ= ĠStub Index Key . create Index Key < String , ĠC ub ical TT Data >( Cub ical TT Data Stub Type . external Id ) Ċ ĉ override Ġfun ĠgetKey () Ġ= ĠKEY Ċ } Ċ Ċ object ĠC ub ical TT Module Stub Type Ġ: ĠC ub ical TT Stub Type < Cub ical TT Module Stub , ĠC ub ical TT Module >(" module ") Ġ{ Ċ ĉ override Ġfun Ġcreate Psi ( stub : ĠC ub ical TT Module Stub ): ĠC ub ical TT Module Ġ= ĠC ub ical TT Module Impl ( stub , Ġthis ) Ċ ĉ override Ġfun Ġcreate Stub ( psi : ĠC ub ical TT Module , Ġparent Stub : ĠStub Element <* >) Ġ= ĠC ub ical TT Module Stub ( parent Stub , Ġpsi . name Decl ?. text . or Empty ()) Ċ ĉ override Ġfun Ġdeserialize ( data Stream : ĠStub InputStream , Ġparent Stub : ĠStub Element <* >) Ġ= ĠC ub ical TT Module Stub ( parent Stub , Ġdata Stream . read Name ()?. string . or Empty ()) Ċ ĉ override Ġfun Ġserialize ( stub : ĠC ub ical TT Module Stub , Ġdata Stream : ĠStub OutputStream ) Ġ= Ġdata Stream . write Name ( stub . moduleName ) Ċ ĉ override Ġfun Ġindex Stub ( stub : ĠC ub ical TT Module Stub , Ġsink : ĠIndex Sink ) Ġ{ Ċĉ ĉ sink . occ urrence ( Cub ical TT Module Stub Key . key , Ġstub . moduleName ) Ċ ĉ } Ċ } Ċ Ċ object ĠC ub ical TT Def Stub Type Ġ: ĠC ub ical TT Stub Type < Cub ical TT Def Stub , ĠC ub ical TT Def >(" decl ") Ġ{ Ċ ĉ override Ġfun Ġcreate Psi ( stub : ĠC ub ical TT Def Stub ) Ġ= ĠC ub ical TT Def Impl ( stub , Ġthis ) Ċ ĉ override Ġfun Ġcreate Stub ( psi : ĠC ub ical TT Def , Ġparent Stub : ĠStub Element <* >) Ġ= ĠC ub ical TT Def Stub ( parent Stub , Ġpsi . children With Le aves . first OrNull Ġ{ Ġit Ġis ĠC ub ical TT Name Decl Ġ} ?. text . or Empty ()) Ċ ĉ override Ġfun Ġdeserialize ( data Stream : ĠStub InputStream , Ġparent Stub : ĠStub Element <* >) Ġ= ĠC ub ical TT Def Stub ( parent Stub , Ġdata Stream . read Name ()?. string . or Empty ()) Ċ ĉ override Ġfun Ġserialize ( stub : ĠC ub ical TT Def Stub , Ġdata Stream : ĠStub OutputStream ) Ġ= Ġdata Stream . write Name ( stub . decl Name ) Ċ ĉ override Ġfun Ġshould Create Stub ( node : ĠAST Node ?): ĠBoolean Ġ{ Ċĉ ĉ val Ġparent Ġ= Ġnode ?. psi ?. parent Ċĉ ĉ if Ġ( parent Ġis ĠC ub ical TTL et Exp ) Ġreturn Ġfalse Ċĉ ĉ if Ġ( parent Ġis ĠC ub ical TT Exp Where ) Ġreturn Ġfalse Ċĉ ĉ return Ġsuper . should Create Stub ( node ) Ċ ĉ } ĊĊ ĉ override Ġfun Ġindex Stub ( stub : ĠC ub ical TT Def Stub , Ġsink : ĠIndex Sink ) Ġ{ Ċĉ ĉ sink . occ urrence ( Cub ical TT Def Stub Key . key , Ġstub . decl Name ) Ċ ĉ } Ċ } Ċ Ċ object ĠC ub ical TT Label Stub Type Ġ: ĠC ub ical TT Stub Type < Cub ical TT Label Stub , ĠC ub ical TT Label >(" label ") Ġ{ Ċ ĉ override Ġfun Ġcreate Psi ( stub : ĠC ub ical TT Label Stub ) Ġ= ĠC ub ical TT Label Impl ( stub , Ġthis ) Ċ ĉ override Ġfun Ġcreate Stub ( psi : ĠC ub ical TT Label , Ġparent Stub : ĠStub Element <* >) Ġ= ĠC ub ical TT Label Stub ( parent Stub , Ġpsi . children With Le aves . first OrNull Ġ{ Ġit Ġis ĠC ub ical TT Name Decl Ġ} ?. text . or Empty ()) Ċ ĉ override Ġfun Ġdeserialize ( data Stream : ĠStub InputStream , Ġparent Stub : ĠStub Element <* >) Ġ= ĠC ub ical TT Label Stub ( parent Stub , Ġdata Stream . read Name ()?. string . or Empty ()) Ċ ĉ override Ġfun Ġserialize ( stub : ĠC ub ical TT Label Stub , Ġdata Stream : ĠStub OutputStream ) Ġ= Ġdata Stream . write Name ( stub . label Name ) Ċ ĉ override Ġfun Ġindex Stub ( stub : ĠC ub ical TT Label Stub , Ġsink : ĠIndex Sink ) Ġ{ Ċĉ ĉ sink . occ urrence ( Cub ical TT Label Stub Key . key , Ġstub . label Name ) Ċ ĉ } Ċ } Ċ Ċ object ĠC ub ical TT Data Stub Type Ġ: ĠC ub ical TT Stub Type < Cub ical TT Data Stub , ĠC ub ical TT Data >(" data ") Ġ{ Ċ ĉ override Ġfun Ġcreate Psi ( stub : ĠC ub ical TT Data Stub ) Ġ= ĠC ub ical TT Data Impl ( stub , Ġthis ) Ċ ĉ override Ġfun Ġcreate Stub ( psi : ĠC ub ical TT Data , Ġparent Stub : ĠStub Element <* >) Ġ= ĠC ub ical TT Data Stub ( parent Stub , Ġpsi . name Decl ?. text . or Empty ()) Ċ ĉ override Ġfun Ġdeserialize ( data Stream : ĠStub InputStream , Ġparent Stub : ĠStub Element <* >) Ġ= ĠC ub ical TT Data Stub ( parent Stub , Ġdata Stream . read Name ()?. string . or Empty ()) Ċ ĉ override Ġfun Ġserialize ( stub : ĠC ub ical TT Data Stub , Ġdata Stream : ĠStub OutputStream ) Ġ= Ġdata Stream . write Name ( stub . data Name ) Ċ ĉ override Ġfun Ġshould Create Stub ( node : ĠAST Node ?): ĠBoolean Ġ{ Ċĉ ĉ val Ġparent Ġ= Ġnode ?. psi ?. parent Ċĉ ĉ if Ġ( parent Ġis ĠC ub ical TTL et Exp ) Ġreturn Ġfalse Ċĉ ĉ if Ġ( parent Ġis ĠC ub ical TT Exp Where ) Ġreturn Ġfalse Ċĉ ĉ return Ġsuper . should Create Stub ( node ) Ċ ĉ } ĊĊ ĉ override Ġfun Ġindex Stub ( stub : ĠC ub ical TT Data Stub , Ġsink : ĠIndex Sink ) Ġ{ Ċĉ ĉ sink . occ urrence ( Cub ical TT Data Stub Key . key , Ġstub . data Name ) Ċ ĉ } Ċ } Ċ