code: public static <T, U extends T, V extends T> T inject(Object self, U initialValue, Closure<V> closure) {
          Iterator iter = InvokerHelper.asIterator(self);
          return (T) inject(iter, initialValue, closure);
      }
docs: Iterates through the given Object, passing in the initial value to
  the closure along with the first item. The result is passed back (injected) into
  the closure along with the second item. The new result is injected back into
  the closure along with the third item and so on until further iteration of
  the object is not possible. Also known as foldLeft in functional parlance.
  
  @param self         an Object
  @param initialValue some initial value
  @param closure      a closure
  @return the result of the last closure call
  @see #inject(Collection, Object, Closure)
  @since 1.5.0