code: @GwtIncompatible("incompatible method")
      public static <T extends Iterable<?>> T noNullElements(final T iterable, final String message, final Object... values) {
          Validate.notNull(iterable);
          int i = 0;
          for (final Iterator<?> it = iterable.iterator(); it.hasNext(); i++) {
              if (it.next() == null) {
                  final Object[] values2 = ArrayUtils.addAll(values, Integer.valueOf(i));
                  throw new IllegalArgumentException(StringUtils.simpleFormat(message, values2));
              }
          }
          return iterable;
      }
docs: <p>Validate that the specified argument iterable is neither
  {@code null} nor contains any elements that are {@code null};
  otherwise throwing an exception with the specified message.
  
  <pre>Validate.noNullElements(myCollection, "The collection contains null at position %d");</pre>
  
  <p>If the iterable is {@code null}, then the message in the exception
  is &quot;The validated object is null&quot;.</p>
  
  <p>If the iterable has a {@code null} element, then the iteration
  index of the invalid element is appended to the {@code values}
  argument.</p>
  
  @param <T> the iterable type
  @param iterable  the iterable to check, validated not null by this method
  @param message  the {@link String#format(String, Object...)} exception message if invalid, not null
  @param values  the optional values for the formatted exception message, null array not recommended
  @return the validated iterable (never {@code null} method for chaining)
  @throws NullPointerException if the array is {@code null}
  @throws IllegalArgumentException if an element is {@code null}
  @see #noNullElements(Iterable)