void (final Value value, final ChildrenBuilder builder, final EvaluationContext evaluationContext) { DebuggerManagerThreadImpl.assertIsManagerThread(); final ValueDescriptorImpl parentDescriptor = (ValueDescriptorImpl)builder.getParentDescriptor(); final NodeManager nodeManager = builder.getNodeManager(); final NodeDescriptorFactory nodeDescriptorFactory = builder.getDescriptorManager(); if (!(value instanceof ObjectReference objRef)) { builder.setChildren(Collections.emptyList()); return; } final ReferenceType refType = objRef.referenceType(); // default ObjectReference processing DebuggerUtilsAsync.allFields(refType) .thenAccept(fields -> { if (fields.isEmpty()) { builder.setChildren(Collections.singletonList(nodeManager.createMessageNode(MessageDescriptor.CLASS_HAS_NO_FIELDS.getLabel()))); return; } createNodesToShow(fields, evaluationContext, parentDescriptor, nodeManager, nodeDescriptorFactory, objRef) .thenAccept(nodesToShow -> { if (nodesToShow.isEmpty()) { setClassHasNoFieldsToDisplayMessage(builder, nodeManager); return; } builder.setChildren(nodesToShow); } ); } ); }