/* Ċ Ġ* ĠCopyright Ġ 2 0 0 0 - 2 0 1 7 Ġ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 Ġcom . intellij . execution . junit . code Insight Ċ Ċ import Ġcom . intellij . code Insight . Annotation Util Ċ import Ġcom . intellij . code Insight . Meta Annotation Util Ċ import Ġcom . intellij . code Insight . daemon . impl . analysis . Java Gener ics Util Ċ import Ġcom . intellij . code Insight . daemon . impl . quick fix . Create Method Quick Fix Ċ import Ġcom . intellij . code Insight . daemon . impl . quick fix . Delete Element Fix Ċ import Ġcom . intellij . code Insight . daemon . quick Fix . File Reference Quick Fix Provider Ċ import Ġcom . intellij . code Insight . int ention . Quick Fix Factory Ċ import Ġcom . intellij . code Inspection . Base Java Batch Local Inspection Tool Ċ import Ġcom . intellij . code Inspection . Local Quick Fix And Int ention Action On Psi Element Ċ import Ġcom . intellij . code Inspection . Problem Highlight Type Ċ import Ġcom . intellij . code Inspection . Problems Holder Ċ import Ġcom . intellij . execution . junit . JUnit Util Ċ import Ġcom . intellij . execution . junit . code Insight . references . Method Source Reference Ċ import Ġcom . intellij . openapi . editor . Editor Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . project Roots . Java Sdk Version Ċ import Ġcom . intellij . openapi . project Roots . Java Version Service Ċ import Ġcom . intellij . openapi . util . text . StringUtil Ċ import Ġcom . intellij . psi .* Ċ import Ġcom . intellij . psi . code Style . Java Code Style Manager Ċ import Ġcom . intellij . psi . impl . source . resolve . reference . impl . providers . File Reference Ċ import Ġcom . intellij . psi . util . Inheritance Util Ċ import Ġcom . intellij . psi . util . Psi Util Ċ import Ġcom . intellij . psi . util . Type Conversion Util Ċ import Ġcom . intellij . util . containers . Container Util Ċ import Ġcom . si ye h . Inspection G ad gets Bundle Ċ import Ġcom . si ye h . ig . junit . JUnit Common ClassNames Ċ import Ġorg . jetbrains . annotations . N ls Ċ import Ġjava . util .* Ċ Ċ class ĠJ Unit 5 Malformed Parameterized Inspection Ġ: ĠBase Java Batch Local Inspection Tool () Ġ{ ĊĊĠ Ġ@ N ls ĊĠ Ġoverride Ġfun Ġget DisplayName (): ĠString Ġ{ ĊĠĠĠ Ġreturn ĠIns pection G ad gets Bundle . message (" junit 5 . valid . parameter ized . configuration . display . name ") ĊĠ Ġ} ĊĊĊĠ Ġoverride Ġfun Ġbuild Visitor ( holder : ĠPro blems Holder , Ġis On The Fly : ĠBoolean ): ĠPsi Element Visitor Ġ{ ĊĠĠĠ Ġval Ġfile Ġ= Ġholder . file ĊĠĠĠ Ġif Ġ(! Java Version Service . getInstance (). is At Least ( file , ĠJava Sdk Version . JDK _ 1 _ 8 )) Ġreturn ĠPsi Element Visitor . EMPTY _ VIS ITOR ĊĠĠĠ Ġif Ġ( Java Psi Facade . getInstance ( file . project ). find Class ( JUnit Common ClassNames . ORG _ J UNIT _ J UP ITER _ PARAMS _ PARAMETER IZED _ TEST , Ġfile . resolve Scope ) Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġreturn ĠPsi Element Visitor . EMPTY _ VIS ITOR ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġobject Ġ: ĠJava Element Visitor () Ġ{ ĊĊĠĠĠĠĠ Ġoverride Ġfun Ġvisit Method ( method : ĠPsi Method ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparameter ized Annotation Ġ= ĠAnnotation Util . find Annotations ( method , ĠCollections . singletonList ( JUnit Common ClassNames . ORG _ J UNIT _ J UP ITER _ PARAMS _ PARAMETER IZED _ TEST )) ĊĠĠĠĠĠĠĠ Ġval Ġtest Annotation Ġ= ĠAnnotation Util . find Annotations ( method , ĠJ Unit Util . TEST 5 _ J UP ITER _ AN NOT ATIONS ) ĊĠĠĠĠĠĠĠ Ġif Ġ( parameter ized Annotation . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġif Ġ( test Annotation . isNotEmpty () Ġ&& Ġmethod . parameter List . parameters Count Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . register Problem ( test Annotation [ 0 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Sus pic ious Ġcombination Ġ@ Test Ġand Ġ@ Parameterized Test ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDelete Element Fix ( test Annotation [ 0 ])) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠ Ġvar Ġno Multi Args Provider Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠ Ġvar Ġsource Ġ: ĠPsi Annotation ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠ ĠAnnotation Util . find Annotations ( method , ĠJ Unit Common ClassNames . SOURCE _ AN NOT ATIONS ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it . qualified Name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJ Unit Common ClassNames . ORG _ J UNIT _ J UP ITER _ PARAMS _ PROVIDER _ METHOD _ SOURCE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Method Source ( method , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġno Multi Args Provider Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJ Unit Common ClassNames . ORG _ J UNIT _ J UP ITER _ PARAMS _ VALUES _ SOURCE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Values Source ( method , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJ Unit Common ClassNames . ORG _ J UNIT _ J UP ITER _ PARAMS _ ENUM _ SOURCE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Enum Source ( method , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJ Unit Common ClassNames . ORG _ J UNIT _ J UP ITER _ PARAMS _ PROVIDER _ CSV _ FILE _ SOURCE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck File Source ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġno Multi Args Provider Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJ Unit Common ClassNames . ORG _ J UNIT _ J UP ITER _ PARAMS _ PROVIDER _ CSV _ SOURCE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJ Unit Common ClassNames . ORG _ J UNIT _ J UP ITER _ PARAMS _ PROVIDER _ ARGUMENT S _ SOURCE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġno Multi Args Provider Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠ Ġif Ġ( no Multi Args Provider ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( source Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . register Problem ( parameter ized Annotation [ 0 ], Ġ" No Ġsources Ġare Ġprovided , Ġthe Ġsuite Ġwould Ġbe Ġempty ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( has Multiple Parameters ( method )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . register Problem ( source !! , Ġ" Multiple Ġparameters Ġare Ġnot Ġsupported Ġby Ġthis Ġsource ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġif Ġ( test Annotation . isNotEmpty () Ġ&& ĠMeta Annotation Util . is Meta Annotated ( method , ĠJ Unit Common ClassNames . SOURCE _ AN NOT ATIONS )) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġholder . register Problem ( test Annotation [ 0 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Sus pic ious Ġcombination Ġ@ Test Ġand Ġparameter ized Ġsource ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠChange Annotation Fix ( test Annotation [ 0 ], ĠJ Unit Common ClassNames . ORG _ J UNIT _ J UP ITER _ PARAMS _ PARAMETER IZED _ TEST )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġprivate Ġfun Ġcheck Enum Source ( method : ĠPsi Method , Ġenum Source : ĠPsi Annotation ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprocess Array In Annotation Parameter ( enum Source . find AttributeValue (" value "), Ġ{ Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġis ĠPsi Class Object Access Expression ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Source Type And ParameterType Ag ree ( method , Ġvalue , Ġvalue . operand . type ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġprivate Ġfun Ġcheck Values Source ( method : ĠPsi Method , Ġvalues Source : ĠPsi Annotation ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpossible Values Ġ= ĠContainer Util . immutable Map Builder < String , ĠPsi Type >() ĊĠĠĠĠĠĠĠĠĠ Ġ. put (" strings ", ĠPsi Type . get Java Lang String ( method . manager , Ġmethod . resolve Scope )) ĊĠĠĠĠĠĠĠĠĠ Ġ. put (" ints ", ĠPsi Type . INT ) ĊĠĠĠĠĠĠĠĠĠ Ġ. put (" long s ", ĠPsi Type . LONG ) ĊĠĠĠĠĠĠĠĠĠ Ġ. put (" double s ", ĠPsi Type . DOUBLE ). build () ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( value Key Ġin Ġpossible Values . keys ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġprocess Array In Annotation Parameter ( values Source . find Declared AttributeValue ( value Key ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġvalue Ġ-> Ġcheck Source Type And ParameterType Ag ree ( method , Ġvalue , Ġpossible Values [ value Key ] !! ) Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġattributes Number Ġ= Ġvalues Source . parameter List . attributes . size ĊĠĠĠĠĠĠĠ Ġif Ġ( attributes Number Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġholder . register Problem ( values Source , Ġ" Exactly Ġone Ġtype Ġof Ġinput Ġmust Ġbe Ġprovided ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġif Ġ( attributes Number Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġholder . register Problem ( values Source , Ġ" No Ġvalue Ġsource Ġis Ġdefined ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġprivate Ġfun Ġcheck File Source ( method Source : ĠPsi Annotation ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġannotation Member Value Ġ= Ġmethod Source . find Declared AttributeValue (" resources ") ĊĠĠĠĠĠĠĠ Ġprocess Array In Annotation Parameter ( annotation Member Value , Ġ{ Ġattribute Value Ġ-> ĊĠĠĠĠĠĠĠĠĠ Ġval Ġrefs Ġ= Ġattribute Value . references . filter Ġ{ Ġit Ġ-> Ġit Ġis ĠFile Reference Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġif Ġ( refs . find Ġ{ Ġreference Ġ-> Ġreference . resolve () Ġ!= Ġnull Ġ} Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreference Ġ= Ġrefs . first () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfixes Ġ= Ġif Ġ( reference Ġ!= Ġnull ) ĠFile Reference Quick Fix Provider . register Quick Fix ( reference Ġas ĠFile Reference ). to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġempty Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . register Problem ( attribute Value , Ġ" Cannot Ġresolve Ġfile Ġsource : Ġ\ '" Ġ+ Ġattribute Value . text Ġ+ Ġ"\ '", Ġ* fixes ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġprivate Ġfun Ġcheck Method Source ( method : ĠPsi Method , Ġmethod Source : ĠPsi Annotation ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġannotation Member Value Ġ= Ġmethod Source . find Declared AttributeValue (" value ") ĊĠĠĠĠĠĠĠ Ġprocess Array In Annotation Parameter ( annotation Member Value , Ġ{ Ġattribute Value Ġ-> ĊĠĠĠĠĠĠĠĠĠ Ġfor Ġ( reference Ġin Ġattribute Value . references ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( reference Ġis ĠMethod Source Reference ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresolve Ġ= Ġreference . resolve () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( resolve Ġ! is ĠPsi Method ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontaining Class Ġ= Ġmethod . containing Class ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcreate Fix Ġ: ĠCreate Method Quick Fix ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( containing Class Ġ!= Ġnull Ġ&& Ġholder . is On The Fly ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Fix Ġ= ĠCreate Method Quick Fix . create Fix ( containing Class , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" static ĠObject [][] Ġ" Ġ+ Ġreference . value Ġ+ Ġ" ()", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" return Ġnew ĠObject [][] Ġ{}; ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . register Problem ( attribute Value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Cannot Ġresolve Ġtarget Ġmethod Ġsource : Ġ\ '" Ġ+ Ġreference . value Ġ+ Ġ"\ '", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Fix ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsource Provider Ġ: ĠPsi Method Ġ= Ġresolve ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprovider Name Ġ= Ġsource Provider . name ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! source Provider . has Modifier Property ( Psi Modifier . STATIC )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . register Problem ( attribute Value , Ġ" Method Ġsource Ġ\' $ provider Name \' Ġmust Ġbe Ġstatic ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProblem Highlight Type . GENERIC _ ERROR _ OR _ WARNING , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQuick Fix Factory . getInstance (). create Modifier List Fix ( source Provider , ĠPsi Modifier . STATIC , Ġtrue , Ġfalse )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( source Provider . parameter List . parameters Count Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . register Problem ( attribute Value , Ġ" Method Ġsource Ġ\' $ provider Name \' Ġshould Ġhave Ġno Ġparameters ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcomponent Type Ġ= Ġget ComponentType ( source Provider . returnType , Ġmethod ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( component Type Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . register Problem ( attribute Value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Method Ġsource Ġ\' $ provider Name \' Ġmust Ġhave Ġone Ġof Ġthe Ġfollowing Ġreturn Ġtype : ĠStream <? >, ĠIterator <? >, ĠIterable <?> Ġor ĠObject [] ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( has Multiple Parameters ( method ) Ġ&& Ġ! is Arguments In her itor ( component Type ) Ġ&& Ġ! component Type . equals ToText ( Common ClassNames . JAVA _ LANG _ OBJECT )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . register Problem ( attribute Value , Ġ" Multiple Ġparameters Ġhave Ġto Ġbe Ġwrapped Ġin ĠArguments ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġprivate Ġfun Ġprocess Array In Annotation Parameter ( attribute Value : ĠPsi Annotation Member Value ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchecker : Ġ( value Ġ: ĠPsi Annotation Member Value ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( attribute Value Ġis ĠPsi Literal Ġ|| Ġattribute Value Ġis ĠPsi Class Object Access Expression ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġchecker . invoke ( attribute Value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġif Ġ( attribute Value Ġis ĠPsi Array Initializer Member Value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġfor Ġ( member Value Ġin Ġattribute Value . initial izers ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprocess Array In Annotation Parameter ( member Value , Ġchecker ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġprivate Ġfun Ġcheck Source Type And ParameterType Ag ree ( method : ĠPsi Method , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattribute Value : ĠPsi Annotation Member Value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomponent Type : ĠPsi Type ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparameters Ġ= Ġmethod . parameter List . parameters ĊĠĠĠĠĠĠĠ Ġif Ġ( parameters . size Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġval Ġparam Type Ġ= Ġparameters [ 0 ]. type ĊĠĠĠĠĠĠĠĠĠ Ġif Ġ(! param Type . isAssignableFrom ( component Type ) Ġ&& Ġ! is Arguments In her itor ( component Type )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( component Type . equals ToText ( Common ClassNames . JAVA _ LANG _ STRING )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// implicit Ġconversion Ġto Ġprimitive / wrapper ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Type Conversion Util . is Primitive And NotNull Or Wrapper ( param Type )) Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpsi Class Ġ= ĠPsi Util . resolve Class In ClassType Only ( param Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// implicit Ġconversion Ġto Ġenum ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( psi Class Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( psi Class . is Enum Ġ&& Ġpsi Class . find Field ByName (( attribute Value Ġas ĠPsi Literal ). value Ġas ĠString ?, Ġfalse ) Ġ!= Ġnull ) Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// implicit Ġjava Ġtime Ġconversion ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġqualified Name Ġ= Ġpsi Class . qualified Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( qualified Name Ġ!= Ġnull Ġ&& Ġqualified Name . startsWith (" java . time .")) Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Annotation Util . is Annotated ( parameters [ 0 ], ĠJ Unit Common ClassNames . ORG _ J UNIT _ J UP ITER _ PARAMS _ CONVER TER _ CONVERT _ WITH , Ġfalse )) Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . register Problem ( attribute Value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" No Ġimplicit Ġconversion Ġfound Ġto Ġconvert Ġobject Ġof Ġtype Ġ" Ġ+ Ġcomponent Type . present able Text Ġ+ Ġ" Ġto Ġ" Ġ+ Ġparam Type . present able Text ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġprivate Ġfun Ġis Arguments In her itor ( component Type : ĠPsi Type ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠInherit ance Util . isIn her itor ( component Type , ĠJ Unit Common ClassNames . ORG _ J UNIT _ J UP ITER _ PARAMS _ PROVIDER _ ARGUMENT S ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġprivate Ġfun Ġget ComponentType ( returnType : ĠPsi Type ?, Ġmethod : ĠPsi Method ): ĠPsi Type ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollection ItemType Ġ= ĠJava Gener ics Util . get Collection ItemType ( returnType , Ġmethod . resolve Scope ) ĊĠĠĠĠĠĠĠ Ġif Ġ( collection ItemType Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġreturn Ġcollection ItemType ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Inheritance Util . isIn her itor ( returnType , ĠCommon ClassNames . JAVA _ UTIL _ STREAM _ INT _ STREAM )) Ġreturn ĠPsi Type . INT ; ĊĠĠĠĠĠĠĠ Ġif Ġ( Inheritance Util . isIn her itor ( returnType , ĠCommon ClassNames . JAVA _ UTIL _ STREAM _ LONG _ STREAM )) Ġreturn ĠPsi Type . LONG ; ĊĠĠĠĠĠĠĠ Ġif Ġ( Inheritance Util . isIn her itor ( returnType , ĠCommon ClassNames . JAVA _ UTIL _ STREAM _ DOUBLE _ STREAM )) Ġreturn ĠPsi Type . DOUBLE ; ĊĊĠĠĠĠĠĠĠ Ġval Ġstream ItemType Ġ= ĠPsi Util . substitute Type Parameter ( returnType , ĠCommon ClassNames . JAVA _ UTIL _ STREAM _ STREAM , Ġ 0 , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġif Ġ( stream ItemType Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġreturn Ġstream ItemType ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠPsi Util . substitute Type Parameter ( returnType , ĠCommon ClassNames . JAVA _ UTIL _ ITERATOR , Ġ 0 , Ġfalse ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġhas Multiple Parameters ( method : ĠPsi Method ): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġmethod . parameter List . parameters ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! Inheritance Util . isIn her itor ( it . type , ĠJ Unit Common ClassNames . ORG _ J UNIT _ J UP ITER _ API _ TEST _ INFO ) Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! Inheritance Util . isIn her itor ( it . type , ĠJ Unit Common ClassNames . ORG _ J UNIT _ J UP ITER _ API _ TEST _ REPORT ER ) ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. count () Ġ> Ġ 1 Ġ&& Ġ! Annotation Util . is Annotated ( method , ĠCollections . singleton ( ĊĠĠĠĠĠ ĠJ Unit Common ClassNames . ORG _ J UNIT _ J UP ITER _ API _ EXTENSION _ EXT END _ WITH )) ĊĠ Ġ} Ċ } ĊĊ Ċ class ĠChange Annotation Fix ( test Annotation : ĠPsi Annotation , Ġval Ġtarget Annotation : ĠString ) Ġ: ĠLocal Quick Fix And Int ention Action On Psi Element ( test Annotation ) Ġ{ ĊĠ Ġoverride Ġfun Ġget Family Name () Ġ= Ġ" Replace Ġannotation " ĊĊĠ Ġoverride Ġfun Ġinvoke ( project : ĠProject , Ġfile : ĠPsi File , Ġeditor : ĠEditor ?, Ġstart Element : ĠPsi Element , Ġend Element : ĠPsi Element ) Ġ{ ĊĠĠĠ Ġval Ġannotation Ġ= ĠJava Psi Facade . getElement Factory ( project ). create Annotation FromText ("@ " Ġ+ Ġtarget Annotation , Ġstart Element ) ĊĠĠĠ ĠJava Code Style Manager . getInstance ( project ). short en Class References ( start Element . replace ( annotation )) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠgetText () Ġ= Ġ" Change Ġto Ġ" Ġ+ ĠString Util . get ShortName ( target Annotation ) Ċ Ċ } Ċ