code: static ParameterizedType newParameterizedTypeWithOwner(
        @Nullable Type ownerType, Class<?> rawType, Type... arguments) {
      if (ownerType == null) {
        return newParameterizedType(rawType, arguments);
      }
      // ParameterizedTypeImpl constructor already checks, but we want to throw NPE before IAE
      if (arguments == null) {
        throw new NullPointerException();
      }
      if (rawType.getEnclosingClass() == null) {
        throw new IllegalArgumentException(String.format("Owner type for unenclosed %s", rawType));
      }
      return new ParameterizedTypeImpl(ownerType, rawType, arguments);
    }
docs: Returns a type where {@code rawType} is parameterized by
  {@code arguments} and is owned by {@code ownerType}.