code: public static <T,U> Collection<T> findResults(Iterable<U> self, @ClosureParams(FirstParam.FirstGenericType.class) Closure<T> filteringTransform) {
          List<T> result = new ArrayList<T>();
          for (Object value : self) {
              T transformed = filteringTransform.call(value);
              if (transformed != null) {
                  result.add(transformed);
              }
          }
          return result;
      }
docs: Iterates through the Iterable transforming items using the supplied closure
  and collecting any non-null results.
  <p>
  Example:
  <pre class="groovyTestCase">
  def list = [1,2,3]
  def result = list.findResults { it > 1 ? "Found $it" : null }
  assert result == ["Found 2", "Found 3"]
  </pre>
  
  @param self               an Iterable
  @param filteringTransform a Closure that should return either a non-null transformed value or null for items which should be discarded
  @return the list of non-null transformed values
  @since 2.2.0