package Ġpsi . method Ċ Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġcom . intellij . psi . Psi Method Ċ Ċ class ĠJava Method Provider Ġ: ĠMethod Provider () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠgetName Node ( root : ĠPsi Element ): ĠPsi Element Ġ= ĊĠĠĠĠĠĠĠ Ġ( root Ġas ? ĠPsi Method )?. name Identifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalArgumentException (" Try Ġto Ġextract Ġname Ġnot Ġfrom Ġthe Ġmethod ") ĊĊĠĠĠ Ġoverride Ġfun Ġget Body ( root : ĠPsi Element ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmethod Root Ġ= Ġroot Ġas ? ĠPsi Method ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalArgumentException (" Try Ġto Ġextract Ġbody Ġnot Ġfrom Ġthe Ġmethod ") ĊĠĠĠĠĠĠĠ Ġval Ġblock Ġ= Ġmethod Root . body Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġreturn Ġblock . text ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Constructor ( root : ĠPsi Element ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġ( root Ġas ? ĠPsi Method )?. is Constructor Ġ?: Ġfalse ĊĊĠĠĠ Ġoverride Ġfun Ġhas Modifier ( root : ĠPsi Element , Ġmodifier : ĠString ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġ( root Ġas ? ĠPsi Method )?. has Modifier Property ( modifier ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalArgumentException (" Try Ġto Ġextract Ġmodifier Ġnot Ġfrom Ġthe Ġmethod ") ĊĊĠĠĠ Ġoverride Ġfun Ġhas Annotation ( root : ĠPsi Element , Ġannotation : ĠString ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġ( root Ġas ? ĠPsi Method )?. has Annotation ( annotation ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalArgumentException (" Try Ġto Ġextract Ġannotation Ġnot Ġfrom Ġthe Ġmethod ") Ċ } Ċ