code: @NonNull public <T> CharSequence join(@NonNull Iterable<T> items,
        @Nullable Formatter<T> formatter) {
      checkNotNullOrEmpty(items);
      return joinIterableWithSize(items, getSize(items), formatter);
    }
docs: A list of objects, converting them to {@code Strings} by passing them to {@link
  Formatter#format(Object)}.
  
  @throws IllegalArgumentException if any of the list elements are null or empty strings.