code: @SuppressWarnings("unchecked")
    @Nullable
    public static <E> E findFirstMatch(final Collection<?> source, final Collection<E> candidates) {
      if (CollectionUtils.isEmpty(source) || CollectionUtils.isEmpty(candidates)) {
        return null;
      }
      for (final Object candidate : candidates) {
        if (source.contains(candidate)) {
          return (E) candidate;
        }
      }
      return null;
    }
docs: Return the first element in '{@code candidates}' that is contained in '{@code source}'. If no
  element in '{@code candidates}' is present in '{@code source}' returns {@code null}. Iteration
  order is {@link Collection} implementation specific.
  
  @param source the source Collection
  @param candidates the candidates to search for
  @return the first present object, or {@code null} if not found