void (@NotNull XExpression expression, @NotNull XModificationCallback callback) { final DebuggerContextImpl debuggerContext = DebuggerManagerEx.getInstanceEx(getProject()).getContext(); Field field = getField(); FieldValueSetter setter = null; if (!field.isStatic()) { ObjectReference object = getObject(); if (object != null) { setter = v -> object.setValue(field, v); } } else if (field.declaringType() instanceof ClassType classType) { setter = v -> classType.setValue(field, v); } if (setter != null) { FieldValueSetter finalSetter = setter; set(expression, callback, debuggerContext, new SetValueRunnable() { @Override public void setValue(EvaluationContextImpl evaluationContext, Value newValue) throws ClassNotLoadedException, InvalidTypeException, EvaluateException { finalSetter.setValue(preprocessValue(evaluationContext, newValue, getLType())); update(debuggerContext); } @Override public ClassLoaderReference getClassLoader(EvaluationContextImpl evaluationContext) { return field.declaringType().classLoader(); } @NotNull @Override public Type getLType() throws ClassNotLoadedException { return field.type(); } }); } }