docs: public static <T> PositionFactory<Iterable<? extends T>, T> atIndex(final int index) {
          return new PositionFactory<Iterable<? extends T>, T>(index) {
  
              @Override
              public String toString() {
                  return String.format("Element [%s]", index);
              }
  
              @Override
              protected <P> Type evaluateElementType(Position<P> parentPosition) {
                  return TypeUtils.getTypeArguments(parentPosition.getType(), Iterable.class)
                      .get(Iterable.class.getTypeParameters()[0]);
              }
          };
      }