boolean (PsiTypeCastExpression typeCast) { PsiElement parent = typeCast.getParent(); PsiExpression operand = typeCast.getOperand(); if (operand != null && operand.getType() != null && operand.getType().equals(typeCast.getType())) return true; while(parent instanceof PsiParenthesizedExpression) parent = parent.getParent(); if (parent instanceof PsiExpressionList) parent = parent.getParent(); if (parent instanceof PsiReferenceExpression) parent = parent.getParent(); if (parent instanceof PsiAnonymousClass) parent = parent.getParent(); HashSet<PsiTypeCastExpression> casts = new HashSet<>(); JavaElementVisitor visitor = createRedundantCastVisitor(new CommonProcessors.CollectProcessor<>(casts)); parent.accept(new JavaRecursiveElementWalkingVisitor() { @Override public void visitElement(@NotNull PsiElement element) { super.visitElement(element); element.accept(visitor); if (!casts.isEmpty()) { stopWalking(); } } }); return casts.contains(typeCast); }