code: @Override
      public void flush() throws IOException {
          List<Exception> flushExceptions = new ArrayList<>(delegates.size());
          for (Writer delegate : delegates) {
              try {
                  delegate.flush();
              } catch (IOException | RuntimeException flushException) {
                  flushExceptions.add(flushException);
              }
          }
          if (!flushExceptions.isEmpty()) {
              throw mergeExceptions("flushing", flushExceptions);
          }
      }
docs: Delegates the flush operation to all delegates and merges any occurred exceptions into a single {@link IOException}.
  
  @throws IOException in case at least one of the delegate writers threw an exception while flushing.