public static <T> T coalesce(T... values) {
        return Stream.of(values).filter(Objects::nonNull).findFirst().orElse(null);
    }
public static < T > T coalesce ( T ... values ) { return Stream . of ( values ) . filter ( Objects :: nonNull ) . findFirst ( ) . orElse ( null ) ; }
Returns the first non-null value from the given values (or null if all values are null)

@param values An array of values
@param <T>    The type of the value
@return The first object in the list that is not null (or null, if all are null)