/**
  * Send an SSE event prepared with the given builder. For example:
  *
  * <pre>
  * // static import of SseEmitter
  *
  * SseEmitter emitter = new SseEmitter();
  * emitter.send(event().name("update").id("1").data(myObject));
  * </pre>
  *
  * @param builder a builder for an SSE formatted event.
  * @throws IOException raised when an I/O error occurs
  */
 public void send(SseEventBuilder builder) throws IOException {
   Set<DataWithMediaType> dataToSend = ((SseEventBuilderImpl) builder).build();
   synchronized (this) {
     for (DataWithMediaType entry : dataToSend) {
       super.send(entry.getData(), entry.getMediaType());
     }
   }
 }