docs: void afterHtmlUpdate() {
  
          if (m_overlayTimer != null) {
              m_overlayTimer.cancel();
              m_overlayTimer = null;
          }
          m_runningUpdate = false;
          List<Element> elements = CmsEntityBackend.getInstance().getAttributeElements(
              m_parentEntity,
              m_attributeHandler.getAttributeName(),
              m_formParent.getElement());
          if (m_popupClosed) {
              // the form popup has already been closed, reinitialize the editing widgets for updated HTML
              CmsInlineEditOverlay.updateCurrentOverlayPosition();
              if (m_requireShowPopup) {
                  if (elements.size() > m_attributeIndex) {
                      m_referenceElement = elements.get(m_attributeIndex);
                  }
                  showEditPopup(null);
                  m_hasChanges = true;
              } else {
                  CmsInlineEditOverlay.getRootOverlay().clearButtonPanel();
                  m_htmlUpdateHandler.reinitWidgets(m_formParent);
              }
  
          } else {
              if (m_referenceElement != null) {
                  CmsInlineEditOverlay.removeLastOverlay();
              }
              if (elements.size() > m_attributeIndex) {
                  m_referenceElement = elements.get(m_attributeIndex);
                  CmsInlineEditOverlay.addOverlayForElement(m_referenceElement);
              } else {
                  m_referenceElement = m_formParent.getElement();
                  CmsInlineEditOverlay.addOverlayForElement(m_referenceElement);
              }
          }
          // schedule to update the ovelay position
          m_overlayTimer = new Timer() {
  
              /** Timer run counter. */
              private int m_timerRuns;
  
              /**
               * @see com.google.gwt.user.client.Timer#run()
               */
              @Override
              public void run() {
  
                  CmsInlineEditOverlay.updateCurrentOverlayPosition();
                  if (m_timerRuns > 3) {
                      cancel();
                  }
                  m_timerRuns++;
              }
          };
          m_overlayTimer.scheduleRepeating(100);
      }