code: private IOException mergeExceptions(String actionVerb, Collection<Exception> exceptions) {
          if (exceptions.size() == 1) {
              Exception singleException = exceptions.iterator().next();
              if (singleException instanceof RuntimeException) {
                  throw (RuntimeException) singleException;
              } else if (singleException instanceof IOException) {
                  return (IOException) singleException;
              }
          }
          IOException ioe = new IOException("Error " + actionVerb + " " + exceptions.size() + " delegate writers!");
          for (Exception suppressed : exceptions) {
              ioe.addSuppressed(suppressed);
          }
          return ioe;
      }
docs: Creates a single {@link IOException} merging potentially multiple cause exceptions into it.
  Having this as a separate method helps avoiding unnecessary wrapping for the 'single exception' case.
  <p>
  Only in case a non-<code>IO</code> checked exception or multiple exceptions occurred,
  this method will create a new IOException with message <code>"Error [ACTIONVERB] delegate writer!"</code> or
  <code>"Error [ACTIONVERB] N delegate writers!</code> whatever may be the case.
  
  @param actionVerb A verb describing the action, e.g. <code>"writing"</code>, <code>"flushing"</code>
  or <code>"closing"</code>.
  @param exceptions The exceptions to merge into one IOException.
  @return The merged IOException.