code: private static Map<TypeVariable<?>, Type> getTypeArguments(final ParameterizedType type) {
          return getTypeArguments(type, getRawType(type), null);
      }
docs: <p>Retrieves all the type arguments for this parameterized type
  including owner hierarchy arguments such as
  {@code Outer<K,V>.Inner<T>.DeepInner<E>} .
  The arguments are returned in a
  {@link Map} specifying the argument type for each {@link TypeVariable}.
  </p>
  
  @param type specifies the subject parameterized type from which to
  harvest the parameters.
  @return a {@code Map} of the type arguments to their respective type
  variables.