/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 7 . Ġtang zx ( love . tang zx @ qq . com ) Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . tang . intellij . lua . stubs Ċ Ċ import Ġcom . intellij . lang . AST Node Ċ import Ġcom . intellij . psi . stubs .* Ċ import Ġcom . tang . intellij . lua . psi . Lua Expr Ċ import Ġcom . tang . intellij . lua . psi . Lua Psi Element Ċ Ċ interface ĠLua Expr Stub Element < out ĠT > Ġ{ ĊĠĠĠ Ġval Ġstub : ĠT Ċ } Ċ Ċ interface ĠLua Expr Stub < T Ġ: ĠLua Expr > Ġ: ĠStub Element < T > Ċ Ċ open Ġclass ĠLua Expr Stub Impl < T Ġ: ĠLua Expr >( ĊĠĠĠĠĠĠĠ Ġparent : ĠStub Element < *> ?, ĊĠĠĠĠĠĠĠ Ġelement Type : ĠLua Stub ElementType < *, Ġ*> Ċ ) Ġ: ĠLua Stub Base < T >( parent , Ġelement Type ), ĠLua Expr Stub < T > Ċ Ċ class ĠLua Expr Place Stub ( ĊĠĠĠĠĠĠĠ Ġparent : ĠStub Element < *> ?, ĊĠĠĠĠĠĠĠ Ġelement Type : ĠLua Stub ElementType < *, Ġ*> Ċ ) Ġ: ĠLua Expr Stub Impl < Lua Expr >( parent , Ġelement Type ) Ġ{ ĊĠĠĠ Ġclass ĠType < Psi T Ġ: ĠLua Psi Element >( debug Name : ĠString , Ġprivate Ġval Ġctor : Ġ( Lua Expr Place Stub , ĠI Stub ElementType < *, Ġ* >) Ġ-> ĠPsi T ) ĊĠĠĠĠĠĠĠ Ġ: ĠLua Stub ElementType < Lua Expr Place Stub , ĠPsi T >( debug Name ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate Stub ( psi : ĠPsi T , Ġparent Stub : ĠStub Element < *> ?): ĠLua Expr Place Stub Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠLua Expr Place Stub ( parent Stub , Ġthis ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġshould Create Stub ( node : ĠAST Node ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcreate Stub If Parent Is Stub ( node ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġserialize ( stub : ĠLua Expr Place Stub , Ġdata Stream : ĠStub OutputStream ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdeserialize ( data Stream : ĠStub InputStream , Ġparent Stub : ĠStub Element < *> ?) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ= ĠLua Expr Place Stub ( parent Stub , Ġthis ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate Psi ( stub : ĠLua Expr Place Stub ): ĠPsi T Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġctor ( stub , Ġthis ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġindex Stub ( stub : ĠLua Expr Place Stub , Ġsink : ĠIndex Sink ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }