code: public static <T,U> T findResult(Collection<U> self, @ClosureParams(FirstParam.FirstGenericType.class) Closure<T> closure) {
          for (Object value : self) {
              T result = closure.call(value);
              if (result != null) {
                  return result;
              }
          }
          return null;
      }
docs: Iterates through the collection calling the given closure for each item but stopping once the first non-null
  result is found and returning that result. If all results are null, null is returned.
  <p>
  Example:
  <pre class="groovyTestCase">
  def list = [1,2,3]
  assert "Found 2" == list.findResult { it > 1 ? "Found $it" : null }
  </pre>
  
  @param self    a Collection
  @param closure a closure that returns a non-null value when processing should stop and a value should be returned
  @return the first non-null result from calling the closure, or null
  @since 1.7.5