class ValueWrapper {

    public T orElseGet(Supplier<T> defaultSupplier) {
        return valid ? value : defaultSupplier.get();
    }

    private  ValueWrapper(T value, T expected, boolean valid, String errorMessage);

}