boolean (@NotNull PsiExpression expression, @NotNull Processor<? super SliceUsage> processor, @NotNull JavaSliceBuilder builder) { PsiElement parentElement = expression.getParent(); if (parentElement instanceof PsiArrayAccessExpression && ((PsiArrayAccessExpression)parentElement).getArrayExpression() == expression && PsiUtil.isAccessedForWriting((PsiExpression)parentElement)) { if (PsiUtil.isOnAssignmentLeftHand((PsiExpression)parentElement)) { PsiExpression rightSide = ((PsiAssignmentExpression)parentElement.getParent()).getRExpression(); return rightSide == null || builder.decrementNesting().process(rightSide, processor); } } PsiElement grand = parentElement == null ? null : parentElement.getParent(); if (grand instanceof PsiCallExpression) { return processContainerPutArguments((PsiCallExpression)grand, builder, processor); } return true; }