code: @SuppressWarnings("null")
    public static
    @NonNull
    <T, U extends Collection<T>>
    U
    notNullAll(
      final @Nullable U x,
      final @NonNull String message)
    {
      if (x == null) {
        final StringBuilder text = new StringBuilder(32 + message.length());
        text.append("Expression evaluated to null: ");
        text.append(message);
        throw new NullCheckException(text.toString());
      }
  
      int index = 0;
      final Iterator<T> iter = x.iterator();
      while (iter.hasNext()) {
        final T z = iter.next();
        if (z == null) {
          final StringBuilder text = new StringBuilder(32 + message.length());
          text.append("Expression ");
          text.append(message);
          text.append(" [");
          text.append(index);
          text.append("] evaluated to null");
          throw new NullCheckException(text.toString());
        }
        index = index + 1;
      }
  
      return x;
    }
docs: Check that {@code x} is not null, and that all elements of
  {@code x} are not null, raising {@link NullCheckException} iff
  {@code x == null}.
  
  @param <T>     The type of values
  @param <U>     The type of collections of {@code T}
  @param x       An arbitrary value
  @param message A descriptive message describing the value
  
  @return {@code x}