reactor-core/src/main/java/reactor/core/Exceptions.java
public static RuntimeException multiple(Iterable<Throwable> throwables) {
		RuntimeException multiple = new RuntimeException("Multiple exceptions");
		//noinspection ConstantConditions
		if (throwables != null) {
			for (Throwable t : throwables) {
				//this is ok, multiple is always a new non-singleton instance
				multiple.addSuppressed(t);
			}
		}
		return multiple;
	}
public static RuntimeException multiple(Iterable<Throwable> throwables) {
		RuntimeException multiple = new RuntimeException("Multiple exceptions");
		//noinspection ConstantConditions
		if (throwables != null) {
			for (Throwable t : throwables) {
				//this is ok, multiple is always a new non-singleton instance
				multiple.addSuppressed(t);
			}
		}
		return multiple;
	}
Create a composite exception that wraps the given {@link Throwable Throwable(s)},
as suppressed exceptions. Instances create by this method can be detected using the
{@link #isMultiple(Throwable)} check. The {@link #unwrapMultiple(Throwable)} method
will correctly unwrap these to a {@link List} of the suppressed exceptions. Note
that is will also be consistent in producing a List for other types of exceptions
by putting the input inside a single-element List.

@param throwables the exceptions to wrap into a composite
@return a composite exception with a standard message, and the given throwables as
suppressed exceptions
@see #addThrowable(AtomicReferenceFieldUpdater, Object, Throwable)