void (@NotNull XExpression expression, @NotNull XModificationCallback callback) { final ArrayElementDescriptorImpl elementDescriptor = ArrayElementDescriptorImpl.this; final ArrayReference array = elementDescriptor.getArray(); if (array != null) { if (VirtualMachineProxyImpl.isCollected(array)) { // will only be the case if debugger does not use ObjectReference.disableCollection() because of Patches.IBM_JDK_DISABLE_COLLECTION_BUG Messages.showWarningDialog(getProject(), JavaDebuggerBundle.message("evaluation.error.array.collected") + "\n" + JavaDebuggerBundle .message("warning.recalculate"), JavaDebuggerBundle.message("title.set.value")); //node.getParent().calcValue(); return; } final ArrayType arrType = (ArrayType)array.referenceType(); final DebuggerContextImpl debuggerContext = DebuggerManagerEx.getInstanceEx(getProject()).getContext(); set(expression, callback, debuggerContext, new SetValueRunnable() { @Override public void setValue(EvaluationContextImpl evaluationContext, Value newValue) throws ClassNotLoadedException, InvalidTypeException, EvaluateException { array.setValue(elementDescriptor.getIndex(), preprocessValue(evaluationContext, newValue, getLType())); update(debuggerContext); } @Override public ClassLoaderReference getClassLoader(EvaluationContextImpl evaluationContext) { return arrType.classLoader(); } @NotNull @Override public Type getLType() throws ClassNotLoadedException { return arrType.componentType(); } }); } }