docs: public static <T, V extends T> T inject(Collection<T> self, @ClosureParams(value=FromString.class,options="V,T") Closure<V> closure ) {
          if( self.isEmpty() ) {
              throw new NoSuchElementException( "Cannot call inject() on an empty collection without passing an initial value." ) ;
          }
          Iterator<T> iter = self.iterator();
          T head = iter.next();
          Collection<T> tail = tail(self);
          if (!tail.iterator().hasNext()) {
              return head;
          }
          // cast with explicit weaker generics for now to keep jdk6 happy, TODO: find better fix
          return (T) inject((Collection) tail, head, closure);
      }