private static boolean tryStatementsAreEquivalent( @NotNull PsiTryStatement statement1, @NotNull PsiTryStatement statement2) { final PsiCodeBlock tryBlock1 = statement1.getTryBlock(); final PsiCodeBlock tryBlock2 = statement2.getTryBlock(); if (!codeBlocksAreEquivalent(tryBlock1, tryBlock2)) { return false; } final PsiCodeBlock finallyBlock1 = statement1.getFinallyBlock(); final PsiCodeBlock finallyBlock2 = statement2.getFinallyBlock(); if (!codeBlocksAreEquivalent(finallyBlock1, finallyBlock2)) { return false; } final PsiCodeBlock[] catchBlocks1 = statement1.getCatchBlocks(); final PsiCodeBlock[] catchBlocks2 = statement2.getCatchBlocks(); if (catchBlocks1.length != catchBlocks2.length) { return false; } for (int i = 0; i < catchBlocks2.length; i++) { if (!codeBlocksAreEquivalent(catchBlocks1[i], catchBlocks2[i])) { return false; } } final PsiResourceList resourceList1 = statement1.getResourceList(); final PsiResourceList resourceList2 = statement2.getResourceList(); if (resourceList1 != null) { if (resourceList2 == null) { return false; } if (resourceList1.getResourceVariablesCount() != resourceList2.getResourceVariablesCount()) { return false; } final List<PsiResourceVariable> resourceVariables1 = resourceList1.getResourceVariables(); final List<PsiResourceVariable> resourceVariables2 = resourceList2.getResourceVariables(); for (int i1 = 0, size = resourceVariables1.size(); i1 < size; i1++) { final PsiResourceVariable variable1 = resourceVariables1.get(i1); final PsiResourceVariable variable2 = resourceVariables2.get(i1); if (!localVariablesAreEquivalent(variable1, variable2)) { return false; } } } else if (resourceList2 != null) { return false; } final PsiParameter[] catchParameters1 = statement1.getCatchBlockParameters(); final PsiParameter[] catchParameters2 = statement2.getCatchBlockParameters(); if (catchParameters1.length != catchParameters2.length) { return false; } for (int i = 0; i < catchParameters2.length; i++) { if (!parametersAreEquivalent(catchParameters2[i], catchParameters1[i])) { return false; } } return true; }
public static boolean processDeclarationsInResourceList( @NotNull final PsiResourceList resourceList, @NotNull final PsiScopeProcessor processor, @NotNull final ResolveState state, final PsiElement lastParent) { final ElementClassHint hint = processor.getHint(ElementClassHint.KEY); if (hint != null && !hint.shouldProcess(ElementClassHint.DeclarationKind.VARIABLE)) return true; final List<PsiResourceVariable> resources = resourceList.getResourceVariables(); @SuppressWarnings({"SuspiciousMethodCalls"}) final int lastIdx = lastParent instanceof PsiResourceVariable ? resources.indexOf(lastParent) : resources.size(); for (int i = 0; i < lastIdx; i++) { if (!processor.execute(resources.get(i), state)) return false; } return true; }