code: public final <T> Class<T> getParameterizedClassArgumentByIndex(int index) {
          List<Class<?>> list = getParameterizedClassArguments();
          if (index > list.size() - 1 || index < 0) {
              String message = "index %s is out of bounds. Should be within [0, %s]";
              throw new IndexOutOfBoundsException(String.format(message, index, list.size() - 1));
          }
          @SuppressWarnings("unchecked")
          Class<T> temp = (Class<T>) list.get(index);
          return temp;
      }
docs: Convenient method that returns the specified element in the list (as returned from method
  {@link ParserHelper#getParameterizedClassArguments()}).
  
  @param index index of the element to return
  @return the element at the specified position in the list (as returned from method
  {@link ParserHelper#getParameterizedClassArguments()}).
  @throws IndexOutOfBoundsException if the index is out of range
  (<tt>index &lt; 0 || index &gt;= size()</tt>)
  @throws UnsupportedOperationException if the {@code targetType} is not a parameterized type.
  @throws UnsupportedOperationException if any of the parameterized type arguments is of a
  parameterized type (with exception of {@link Class}).