docs: private synchronized void refresh() {
      pendingRefresh.set(null); // Clear
      if(LOG.isDebuggingFine()) {
        LOG.debugFine("Refresh in thread " + Thread.currentThread().getName());
      }
      boolean updateStyle = false;
      Iterator<Entry<VisualizationTask, Visualization>> it = taskmap.entrySet().stream() //
          .sorted((a, b) -> Integer.compare(a.getKey().level(), b.getKey().level())) //
          .iterator();
      Element insertpos = null;
      while(it.hasNext()) {
        Entry<VisualizationTask, Visualization> ent = it.next();
        VisualizationTask task = ent.getKey();
        Visualization vis = ent.getValue();
        if(!task.isVisible()) {
          if(vis != null) {
            SVGUtil.removeFromParent(vis.getLayer());
          }
          continue;
        }
        if(vis == null) {
          ent.setValue(vis = instantiateVisualization(task));
        }
        Element layer = vis.getLayer();
        if(task.has(RenderFlag.NO_EXPORT)) {
          layer.setAttribute(NO_EXPORT_ATTRIBUTE, NO_EXPORT_ATTRIBUTE);
        }
        // Insert or append
        if(layer.getParentNode() != getRoot()) {
          if(insertpos != null && insertpos.getNextSibling() != null) {
            getRoot().insertBefore(layer, insertpos.getNextSibling());
          }
          else {
            getRoot().appendChild(layer);
          }
        }
        updateStyle = true;
        insertpos = layer;
      }
      if(updateStyle) {
        updateStyleElement();
      }
    }