void () { myAlarm.cancelAllRequests(); myAlarm.addRequest(() -> { ConfigurationError[] errors; int currentStamp; synchronized (myLock) { errors = myErrors.toArray(new ConfigurationError[0]); currentStamp = myComputedErrorsStamp; } final HtmlChunk[] liTags = getErrorDescriptions(errors); final HtmlChunk.Element ol = HtmlChunk.tag("ol") .children(liTags); final HtmlChunk.Element style = HtmlChunk.tag("style") .attr("type", "text/css") .addText(myStyleText); final HtmlChunk.Element headerTag = new HtmlBuilder() .append(style) .wrapWith("header"); final HtmlChunk.Element result = new HtmlBuilder() .append(headerTag) .append(HtmlChunk.body().child(ol)) .wrapWith(HtmlChunk.html()); myContentUpdateQueue.queue(new ShowErrorsUpdate(currentStamp, result.toString())); if (myOnErrorsChanged != null) { myOnErrorsChanged.run(); } }, 100); }