code: public Object getIndexedValue(String propertyName, int index) {
          return getIndexedValue(object, getPropertyOrThrow(bean, propertyName), index, this);
      }
docs: Returns the value of the specified indexed property from the wrapped object.
  
  @param propertyName the name of the indexed property whose value is to be extracted, cannot be {@code null}
  @param index        the index of the property value to be extracted
  @return the indexed property value
  @throws ReflectionException       if a reflection error occurs
  @throws IllegalArgumentException  if the propertyName parameter is {@code null}
  @throws IllegalArgumentException  if the indexed object in the wrapped object is not a {@link List}, {@link Iterable} or {@code array}
  @throws NullPointerException      if the indexed {@link List}, {@link Iterable} or {@code array} is {@code null} in the given object
  @throws NullPointerException      if the wrapped object does not have a property with the given name
  @throws IndexOutOfBoundsException if the specified index is outside the valid range for the underlying indexed property