package Ġcn . var sa . idea . p de . partial . plugin . java . inspection Ċ Ċ import Ġcn . var sa . idea . p de . partial . common .* Ċ import Ġcn . var sa . idea . p de . partial . plugin . facet .* Ċ import Ġcn . var sa . idea . p de . partial . plugin . inspection .* Ċ import Ġcom . intellij . code Insight . daemon . impl . analysis .* Ċ import Ġcom . intellij . openapi . module .* Ċ import Ġcom . intellij . psi .* Ċ import Ġjava . lang . annotation .* Ċ Ċ class ĠJava Package Accessibility Inspection Ġ: ĠPackage Accessibility Inspection () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġcheck Element ( ĊĠĠĠĠĠĠĠ Ġplace : ĠPsi Element , Ġdependency : ĠPsi Element , Ġfacet : ĠP DEF ac et , Ġoccur Problem : Ġ( Problem , ĠPsi Element ) Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( dependency ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠPsi Class Ġ-> Ġcheck Accessibility ( dependency , Ġfacet ). forEach Ġ{ Ġoccur Problem ( it , Ġplace ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠPsi Method Ġ-> Ġdependency . parent ?. let Ġ{ Ġit Ġas ? ĠPsi Class Ġ} ?. let Ġ{ Ġcheck Accessibility ( it , Ġfacet ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . forEach Ġ{ Ġoccur Problem ( it , Ġplace ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġcheck Accessibility ( target Class : ĠPsi Class , Ġfacet : ĠP DEF ac et ): ĠList < Problem > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcl zz Ġ= Ġtarget Class ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( cl zz . parent Ġis ĠPsi Class ) Ġcl zz Ġ= Ġcl zz . parent Ġas ĠPsi Class ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cl zz . is Annotation Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpolicy Ġ= ĠAn notations Highlight Util . get RetentionPolicy ( cl zz ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( policy Ġ== ĠRet ention Policy . CLASS Ġ|| Ġpolicy Ġ== ĠRet ention Policy . SOURCE ) Ġreturn Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtarget File Ġ= Ġcl zz . containing File ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( target File Ġ! is ĠPsi Class Owner ) Ġreturn Ġempty List () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠpackageName Ġ= Ġtarget File . packageName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( packageName . isBlank () Ġ|| ĠpackageName . startsWith ( Java )) Ġreturn Ġempty List () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġqualified Name Ġ= Ġcl zz . qualified Name Ġ?: Ġreturn Ġempty List () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( facet . module Ġ== ĠModule Util Core . find Module For Psi Element ( cl zz )) Ġreturn Ġempty List () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcheck Accessibility ( target File , ĠpackageName , Ġqualified Name , Ġfacet . module ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ