code: public void improveAccuracy(final Type... arguments) {
          if (!isMoreSpecificGenerics(arguments)) {
              throw new IllegalArgumentException(String
                      .format("Provided generics for type %s [%s] are less specific then current [%s]",
                              rawType.getSimpleName(),
                              TypeToStringUtils.toStringTypes(arguments, EmptyGenericsMap.getInstance()),
                              TypeToStringUtils.toStringTypes(actualArguments, EmptyGenericsMap.getInstance())));
          }
          this.actualArguments = arguments;
          this.completeType = true;
      }
docs: Instance type itself can;t be used to properly guess generics, but external logic, knowing actual context, could
  resolve generic types using deeper instance analysis. For example, it is possible in case of
  {@link java.util.List} (or any other container): contained object types must be checked.
  <p>
  This method must be called if external logic could improve generic typings so all logic, already holding
  reference to this instance could immediately benefit from more accurate type.
  <p>
  After improving accuracy, type assumed to be complete ({@link #isCompleteType()}).
  
  @param arguments more accurate types
  @throws IllegalArgumentException if provided types are not correct (count) or contains less accurate types
  then already contained
  @see #isMoreSpecificGenerics(Type...) to test arguments before