DiagnosticsProperty<T>.lazy  constructor 
- String? name,
 - ComputePropertyValueCallback<
T> computeValue, { - String? description,
 - String? ifNull,
 - String? ifEmpty,
 - bool showName = true,
 - bool showSeparator = true,
 - Object? defaultValue = kNoDefaultValue,
 - String? tooltip,
 - bool missingIfNull = false,
 - bool expandableValue = false,
 - bool allowWrap = true,
 - bool allowNameWrap = true,
 - DiagnosticsTreeStyle style = DiagnosticsTreeStyle.singleLine,
 - DiagnosticLevel level = DiagnosticLevel.info,
 
Property with a value that is computed only when needed.
Use if computing the property value may throw an exception or is expensive.
The level argument is just a suggestion and can be overridden
if something else about the property causes it to have a lower or higher
level. For example, if calling computeValue throws an exception, level
will always return DiagnosticLevel.error.
Implementation
DiagnosticsProperty.lazy(
  String? name,
  ComputePropertyValueCallback<T> computeValue, {
  String? description,
  String? ifNull,
  this.ifEmpty,
  super.showName,
  super.showSeparator,
  this.defaultValue = kNoDefaultValue,
  this.tooltip,
  this.missingIfNull = false,
  this.expandableValue = false,
  this.allowWrap = true,
  this.allowNameWrap = true,
  DiagnosticsTreeStyle super.style = DiagnosticsTreeStyle.singleLine,
  DiagnosticLevel level = DiagnosticLevel.info,
}) : assert(defaultValue == kNoDefaultValue || defaultValue is T?),
     _description = description,
     _valueComputed = false,
     _value = null,
     _computeValue = computeValue,
     _defaultLevel = level,
     ifNull = ifNull ?? (missingIfNull ? 'MISSING' : null),
     super(name: name);