public T getValue() {
        if (this.value == null) {
            final T value = valueSupplier.get();
            Objects.requireNonNull(value);
            this.value = value;
            if (onInitConsumer != null) {
                onInitConsumer.accept(value);
            }
        }
        return value;
    }
@return The value, initialising it if it has not already been initialised.
@throws NullPointerException if the value supplied by valueSupplier is null.
stroom-core-client-widget/src/main/java/stroom/widget/util/client/LazyValue.java