code: public static List combinations(Iterable self, Closure<?> function) {
          return collect((Iterable)GroovyCollections.combinations(self), function);
      }
docs: Adds GroovyCollections#combinations(Iterable, Closure) as a method on collections.
  <p>
  Example usage:
  <pre class="groovyTestCase">assert [[2, 3],[4, 5, 6]].combinations {x,y {@code ->} x*y } == [8, 12, 10, 15, 12, 18]</pre>
  
  @param self a Collection of lists
  @param function a closure to be called on each combination
  @return a List of the results of applying the closure to each combinations found
  @see groovy.util.GroovyCollections#combinations(Iterable)
  @since 2.2.0