code: public static <E> Map<Integer, E> indexed(Iterable<E> self, int offset) {
          Map<Integer, E> result = new LinkedHashMap<Integer, E>();
          Iterator<Tuple2<Integer, E>> indexed = indexed(self.iterator(), offset);
          while (indexed.hasNext()) {
              Tuple2<Integer, E> next = indexed.next();
              result.put(next.getFirst(), next.getSecond());
          }
          return result;
      }
docs: Zips an Iterable with indices in (index, value) order.
  <p/>
  Example usage:
  <pre class="groovyTestCase">
  assert [5: "a", 6: "b"] == ["a", "b"].indexed(5)
  assert ["1: a", "2: b"] == ["a", "b"].indexed(1).collect { idx, str {@code ->} "$idx: $str" }
  </pre>
  
  @param self   an Iterable
  @param offset an index to start from
  @return a Map (since the keys/indices are unique) containing the elements from the iterable zipped with indices
  @see #withIndex(Iterable, int)
  @since 2.4.0