docs: function applyInnerHTMLFix(document, DOMHelperClass) {
          if (!document) return DOMHelperClass;
          var table = document.createElement('table');
          try {
              table.innerHTML = '<tbody></tbody>';
          } catch (e) {} finally {
              if (table.childNodes.length !== 0) {
                  // It worked as expected, no fix required
                  return DOMHelperClass;
              }
          }
          var innerHTMLWrapper = {
              colgroup: { depth: 2, before: '<table><colgroup>', after: '</colgroup></table>' },
              table: { depth: 1, before: '<table>', after: '</table>' },
              tbody: { depth: 2, before: '<table><tbody>', after: '</tbody></table>' },
              tfoot: { depth: 2, before: '<table><tfoot>', after: '</tfoot></table>' },
              thead: { depth: 2, before: '<table><thead>', after: '</thead></table>' },
              tr: { depth: 3, before: '<table><tbody><tr>', after: '</tr></tbody></table>' }
          };
          var div = document.createElement('div');
          return (function (_DOMHelperClass) {
              _inherits(DOMHelperWithInnerHTMLFix, _DOMHelperClass);
  
              function DOMHelperWithInnerHTMLFix() {
                  _classCallCheck(this, DOMHelperWithInnerHTMLFix);
  
                  _DOMHelperClass.apply(this, arguments);
              }
  
              DOMHelperWithInnerHTMLFix.prototype.insertHTMLBefore = function insertHTMLBefore(parent, nextSibling, html) {
                  if (html === null || html === '') {
                      return _DOMHelperClass.prototype.insertHTMLBefore.call(this, parent, nextSibling, html);
                  }
                  var parentTag = parent.tagName.toLowerCase();
                  var wrapper = innerHTMLWrapper[parentTag];
                  if (wrapper === undefined) {
                      return _DOMHelperClass.prototype.insertHTMLBefore.call(this, parent, nextSibling, html);
                  }
                  var wrappedHtml = wrapper.before + html + wrapper.after;
                  div.innerHTML = wrappedHtml;
                  var parentNode = div;
                  for (var i = 0; i < wrapper.depth; i++) {
                      parentNode = parentNode.childNodes[0];
                  }
                  var first = undefined,
                      last = undefined,
                      current = undefined;
                  first = current = parentNode.childNodes[0];
                  while (current) {
                      last = current;
                      parent.insertBefore(current, nextSibling);
                      current = current.nextSibling;
                  }
                  return new _glimmerRuntimeLibBounds.ConcreteBounds(parent, first, last);
              };
  
              return DOMHelperWithInnerHTMLFix;
          })(DOMHelperClass);
      }