docs: @Override
    public void fullRedraw() {
      if(!(getWidth() > 0 && getHeight() > 0)) {
        LoggingUtil.warning("Thumbnail of zero size requested: " + visFactory);
        return;
      }
      if(thumbid < 0) {
        // LoggingUtil.warning("Generating new thumbnail " + this);
        layer.appendChild(SVGUtil.svgWaitIcon(plot.getDocument(), 0, 0, getWidth(), getHeight()));
        if(pendingThumbnail == null) {
          pendingThumbnail = ThumbnailThread.queue(this);
        }
        return;
      }
      // LoggingUtil.warning("Injecting Thumbnail " + this);
      Element i = plot.svgElement(SVGConstants.SVG_IMAGE_TAG);
      SVGUtil.setAtt(i, SVGConstants.SVG_X_ATTRIBUTE, 0);
      SVGUtil.setAtt(i, SVGConstants.SVG_Y_ATTRIBUTE, 0);
      SVGUtil.setAtt(i, SVGConstants.SVG_WIDTH_ATTRIBUTE, getWidth());
      SVGUtil.setAtt(i, SVGConstants.SVG_HEIGHT_ATTRIBUTE, getHeight());
      i.setAttributeNS(SVGConstants.XLINK_NAMESPACE_URI, SVGConstants.XLINK_HREF_QNAME, ThumbnailRegistryEntry.INTERNAL_PROTOCOL + ":" + thumbid);
      layer.appendChild(i);
    }