/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 5 ĠJetBrains Ġs . r . o . Ċ Ġ* Ċ Ġ* Ġ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 Ġorg . jetbrains . kotlin . j 2 k . usage Processing Ċ Ċ import Ġcom . intellij . psi .* Ċ import Ġorg . jetbrains . kotlin . j 2 k .* Ċ import Ġorg . jetbrains . kotlin . j 2 k . ast .* Ċ Ċ class ĠAccess or To Property Processing ( val Ġaccessor Method : ĠPsi Method , Ġval Ġaccessor Kind : ĠAccess or Kind , Ġval ĠpropertyName : ĠString ) Ġ: ĠUsage Processing Ġ{ ĊĠĠĠ Ġoverride Ġval Ġtarget Element : ĠPsi Element Ġget () Ġ= Ġaccessor Method ĊĊĠĠĠ Ġoverride Ġval Ġconverted Code Processor Ġ= Ġobject : ĠConvert ed Code Processor Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġconvert Method Usage ( method Call : ĠPsi MethodCall Expression , Ġcode Converter : ĠCode Converter ): ĠExpression ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Nullable Ġ= Ġcode Converter . type Converter . method Null ability ( accessor Method ). is Nullable ( code Converter . settings ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmethod Expr Ġ= Ġmethod Call . getMethod Expression () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġmethod Call . get ArgumentList (). get Expressions () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠpropertyName Ġ= ĠIdentifier ( propertyName , Ġis Nullable ). assign No Prototype () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproperty Access Ġ= ĠQual ified Expression ( code Converter . convert Expression ( method Expr . get Qualifier Expression ()), ĠpropertyName ). assign No Prototype () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( accessor Kind Ġ== ĠAccess or Kind . GET TER ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( arguments . size Ġ!= Ġ 0 ) Ġreturn Ġnull Ġ// Ġincorrect Ġcall ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġproperty Access ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( arguments . size Ġ!= Ġ 1 ) Ġreturn Ġnull Ġ// Ġincorrect Ġcall ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġargument Ġ= Ġcode Converter . convert Expression ( arguments [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠAssignment Expression ( property Access , Ġargument , Ġ"=" ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġjava Code Processor : ĠExternal Code Processor ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġval Ġkotlin Code Processor : ĠExternal Code Processor ? Ġ= Ġobject : ĠExternal Code Processor Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġprocess Usage ( reference : ĠPsi Reference ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// TODO ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// reference . getElement () Ġas ĠJet Simple Name Expression ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ