void (PsiMethodCallExpression expression) { if (!checkChains) return; if (!isFluentIterableFromCall(expression)) return; final PsiMethodCallExpression chain = findGuavaMethodChain(expression); if (chain == null) { return; } PsiClassType initialType = (PsiClassType)chain.getType(); LOG.assertTrue(initialType != null); PsiClassType targetType = createTargetType(initialType); if (targetType == null) return; PsiElement highlightedElement = chain; if (chain.getParent() instanceof PsiReferenceExpression && chain.getParent().getParent() instanceof PsiMethodCallExpression) { highlightedElement = chain.getParent().getParent(); } holder.registerProblem(highlightedElement, TypeMigrationBundle.message("guava.functional.primitives.can.be.replaced.by.java.api.problem.description"), new MigrateGuavaTypeFix(chain, targetType)); }