@GwtIncompatible("incompatible method")
  @Nullable
  public static Object findValueOfType(final Collection<?> collection, final Class<?>[] types) {
    if (CollectionUtils.isEmpty(collection) || ObjectUtils.isEmpty(types)) {
      return null;
    }
    for (final Class<?> type : types) {
      final Object value = CollectionUtils.findValueOfType(collection, type);
      if (value != null) {
        return value;
      }
    }
    return null;
  }
@ GwtIncompatible ( "incompatible method" ) @ Nullable public static Object findValueOfType ( final Collection < ? > collection , final Class < ? > [ ] types ) { if ( CollectionUtils . isEmpty ( collection ) || ObjectUtils . isEmpty ( types ) ) { return null ; } for ( final Class < ? > type : types ) { final Object value = CollectionUtils . findValueOfType ( collection , type ) ; if ( value != null ) { return value ; } } return null ; }
Find a single value of one of the given types in the given Collection: searching the Collection
for a value of the first type, then searching for a value of the second type, etc.

@param collection the collection to search
@param types the types to look for, in prioritized order
@return a value of one of the given types found if there is a clear match, or {@code null} if
none or more than one such value found