code: @NullableDecl
    public static <T> T get(
        Iterable<? extends T> iterable, int position, @NullableDecl T defaultValue) {
      checkNotNull(iterable);
      Iterators.checkNonnegative(position);
      if (iterable instanceof List) {
        List<? extends T> list = Lists.cast(iterable);
        return (position < list.size()) ? list.get(position) : defaultValue;
      } else {
        Iterator<? extends T> iterator = iterable.iterator();
        Iterators.advance(iterator, position);
        return Iterators.getNext(iterator, defaultValue);
      }
    }
docs: Returns the element at the specified position in an iterable or a default value otherwise.
  
  <p><b>{@code Stream} equivalent:</b> {@code
  stream.skip(position).findFirst().orElse(defaultValue)} (returns the default value if the index
  is out of bounds)
  
  @param position position of the element to return
  @param defaultValue the default value to return if {@code position} is greater than or equal to
  the size of the iterable
  @return the element at the specified position in {@code iterable} or {@code defaultValue} if
  {@code iterable} contains fewer than {@code position + 1} elements.
  @throws IndexOutOfBoundsException if {@code position} is negative
  @since 4.0