code: @SafeVarargs
      public static <T> T firstNonNull(final T... values) {
          if (values != null) {
              for (final T val : values) {
                  if (val != null) {
                      return val;
                  }
              }
          }
          return null;
      }
docs: <p>Returns the first value in the array which is not {@code null}.
  If all the values are {@code null} or the array is {@code null}
  or empty then {@code null} is returned.</p>
  
  <pre>
  ObjectUtils.firstNonNull(null, null)      = null
  ObjectUtils.firstNonNull(null, "")        = ""
  ObjectUtils.firstNonNull(null, null, "")  = ""
  ObjectUtils.firstNonNull(null, "zz")      = "zz"
  ObjectUtils.firstNonNull("abc", *)        = "abc"
  ObjectUtils.firstNonNull(null, "xyz", *)  = "xyz"
  ObjectUtils.firstNonNull(Boolean.TRUE, *) = Boolean.TRUE
  ObjectUtils.firstNonNull()                = null
  </pre>
  
  @param <T> the component type of the array
  @param values  the values to test, may be {@code null} or empty
  @return the first value from {@code values} which is not {@code null},
  or {@code null} if there are no non-null values
  @since 3.0