private boolean matchExtractableVariable(@NotNull PsiElement pattern, @NotNull PsiElement candidate, @NotNull Match match) {
    if (myMatchType == MatchType.EXACT || !(pattern instanceof PsiReferenceExpression) || !(candidate instanceof PsiReferenceExpression)) {
      return false;
    }
    if (myPattern.length == 1 && myPattern[0] == pattern) {
      return false;
    }
    ExtractableExpressionPart part1 = ExtractableExpressionPart.matchVariable((PsiReferenceExpression)pattern, null);
    if (part1 == null || part1.myVariable == null) {
      return false;
    }
    ExtractableExpressionPart part2 = ExtractableExpressionPart.matchVariable((PsiReferenceExpression)candidate, null);
    if (part2 == null || part2.myVariable == null) {
      return false;
    }
    return match.putExtractedParameter(part1, part2);
  }
private boolean matchExtractableVariable(@NotNull PsiElement pattern, @NotNull PsiElement candidate, @NotNull Match match)