Collection<PsiParameter> (@NotNull Collection<? extends PsiParameter> parameters, @NotNull PsiCodeBlock body) { final ControlFlow controlFlow = getControlFlow(body); if (controlFlow == null) return Collections.emptyList(); final Set<PsiParameter> result = filterParameters(controlFlow, parameters); if (result.isEmpty()) return Collections.emptyList(); result.retainAll(ControlFlowUtil.getWrittenVariables(controlFlow, 0, controlFlow.getSize(), false)); if (result.isEmpty()) return Collections.emptyList(); for (final PsiReferenceExpression readBeforeWrite : ControlFlowUtil.getReadBeforeWrite(controlFlow)) { final PsiElement resolved = readBeforeWrite.resolve(); if (resolved instanceof PsiParameter) { result.remove(resolved); } } return result; }