docs: function(newChild, refChild){
          /** @cut */ if (this.noChildNodesElement_)
          /** @cut */ {
          /** @cut */   delete this.noChildNodesElement_;
          /** @cut */   basis.dev.warn('basis.ui: Template has no childNodesElement container, but insertBefore method called; probably it\'s a bug');
          /** @cut */ }
  
          // inherit
          newChild = super_.insertBefore.call(this, newChild, refChild);
  
          var target = newChild.groupNode || this;
          var container = target.childNodesElement || this.childNodesElement;
  
          var nextSibling = newChild.nextSibling;
          var insertPoint = nextSibling && nextSibling.element.parentNode == container ? nextSibling.element : null;
  
          var childElement = newChild.element;
          var refNode = insertPoint || container.insertPoint || null; // NOTE: null at the end for IE
  
          if (childElement.parentNode !== container || childElement.nextSibling !== refNode) // prevent dom update
            container.insertBefore(childElement, refNode);
  
          return newChild;
        }