CompletableFuture<List<DebuggerTreeNode>> (List<Field> fields, EvaluationContext evaluationContext, ValueDescriptorImpl parentDescriptor, NodeManager nodeManager, NodeDescriptorFactory nodeDescriptorFactory, ObjectReference objRef, Set<String> names) { return DebuggerUtilsAsync.getValues(objRef, fields) .thenApply(cachedValues -> { List<DebuggerTreeNode> res = new ArrayList<>(fields.size()); for (Field field : fields) { FieldDescriptorImpl fieldDescriptor = (FieldDescriptorImpl)createFieldDescriptor(parentDescriptor, nodeDescriptorFactory, objRef, field, evaluationContext); if (cachedValues != null) { fieldDescriptor.setValue(cachedValues.get(field)); } if (!names.add(fieldDescriptor.getName())) { fieldDescriptor.putUserData(FieldDescriptor.SHOW_DECLARING_TYPE, Boolean.TRUE); } res.add(nodeManager.createNode(fieldDescriptor, evaluationContext)); } return res; }); }