@Override
  public XValueModifier getModifier(JavaValue value) {
    return new JavaValueModifier(value) {
      @Override
      protected void setValueImpl(@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();
            }
          });
        }
      }
    };
  }
@Override
  public XValueModifier getModifier(JavaValue value)