String (ValueDescriptor descriptor, EvaluationContext evaluationContext, DescriptorLabelListener listener) { NodeRendererSettings nodeRendererSettings = NodeRendererSettings.getInstance(); ToStringRenderer toStringRenderer = nodeRendererSettings.getToStringRenderer(); CompletableFuture<Boolean> toStringApplicable = CompletableFuture.completedFuture(false); if (toStringRenderer.isEnabled()) { toStringApplicable = toStringRenderer.isApplicableAsync(descriptor.getType()); } CompletableFuture<NodeRenderer> renderer = toStringApplicable .thenApply(applicable -> applicable ? toStringRenderer : nodeRendererSettings.getClassRenderer()); return calcLabel(renderer, descriptor, evaluationContext, listener); }