boolean (Match match, Match foldedMatch, DuplicatesFinder.Parameter parameter) { List<Pair.NonNull<PsiExpression, PsiExpression>> expressionMappings = foldedMatch.getFoldedExpressionMappings(parameter); if (ContainerUtil.isEmpty(expressionMappings)) { return false; } // Extracted parameters and folded parameters shouldn't overlap for (Pair.NonNull<PsiExpression, PsiExpression> expressionMapping : expressionMappings) { PsiExpression patternExpression = expressionMapping.getFirst(); for (ExtractedParameter extractedParameter : match.getExtractedParameters()) { for (PsiExpression extractedUsage : extractedParameter.myPatternUsages) { if (PsiTreeUtil.isAncestor(patternExpression, extractedUsage, false) || PsiTreeUtil.isAncestor(extractedUsage, patternExpression, false)) { return false; } } } } return true; }