public static <T1, R> R getOrElseGet(final T1 value,
                                         final Function<T1, R> getter,
                                         final Supplier<R> otherSupplier) {
        return requireNonNullElseGet(get(value, getter), otherSupplier);
    }
Apply getter to value if value is non-null. If value or the result of
applying getter to value is null, return the value supplied by otherSupplier.
stroom-util-shared/src/main/java/stroom/util/shared/NullSafe.java