boolean (PsiElement expression, IElementType token, boolean superClassAccepted) { if (!(expression instanceof GrReferenceExpression ref)) return false; PsiElement nameElement = ref.getReferenceNameElement(); if (nameElement == null) return false; IElementType type = nameElement.getNode().getElementType(); if (type != token) return false; GrExpression qualifier = ref.getQualifier(); if (qualifier == null) { return true; } else { PsiElement resolved = ref.resolve(); if (resolved instanceof PsiClass) { if (hasEnclosingInstanceInScope(((PsiClass)resolved), ref, superClassAccepted)) return true; if (superClassAccepted && GrTraitUtil.isTrait((PsiClass)resolved) && scopeClassImplementsTrait(((PsiClass)resolved), ref)) return true; } return false; } }