public static <T1, T2, R> R getOrElse(final T1 value,
                                          final Function<T1, T2> getter1,
                                          final Function<T2, R> getter2,
                                          final R other) {
        return requireNonNullElse(get(value, getter1, getter2), other);
    }
Apply getter to value if value is non-null. If value or the result of
applying getter to value is null, return other.
stroom-util-shared/src/main/java/stroom/util/shared/NullSafe.java