code: public static <T, U extends T, V extends T,E> T findResult(Collection<E> self, U defaultResult, @ClosureParams(FirstParam.FirstGenericType.class) Closure<V> closure) {
          T result = findResult(self, closure);
          if (result == null) return defaultResult;
          return result;
      }
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 are null, the defaultResult is returned.
  <p>
  Examples:
  <pre class="groovyTestCase">
  def list = [1,2,3]
  assert "Found 2" == list.findResult("default") { it > 1 ? "Found $it" : null }
  assert "default" == list.findResult("default") { it > 3 ? "Found $it" : null }
  </pre>
  
  @param self          a Collection
  @param defaultResult an Object that should be returned if all closure results are null
  @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 the defaultValue
  @since 1.7.5