private static boolean addContainerItemModification(@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;
  }
private static boolean addContainerItemModification(@NotNull PsiExpression expression,
                                                      @NotNull Processor<? super SliceUsage> processor,
                                                      @NotNull JavaSliceBuilder builder)