ValueDescriptor (Value ref, final Project project, @Nullable ValueDescriptor originalDescriptor) { final Field field = ((ObjectReference)ref).referenceType().fieldByName("value"); final Value wrapped = ((ObjectReference)ref).getValue(field); return new ValueDescriptorImpl(project, wrapped) { @Override public Value calcValue(EvaluationContextImpl evaluationContext) { return wrapped; } @Override public void setValueLabel(@NotNull String label) { if (originalDescriptor != null) { originalDescriptor.setValueLabel(label); } } @Override public String calcValueName() { return field.name(); } @Override public PsiExpression getDescriptorEvaluation(DebuggerContext context) { return JavaPsiFacade.getElementFactory(context.getProject()).createExpressionFromText("this." + field.name(), null); } }; }