docs: function (safely) {
  	    switch (this._tag) {
  	      case 'audio':
  	      case 'form':
  	      case 'iframe':
  	      case 'img':
  	      case 'link':
  	      case 'object':
  	      case 'source':
  	      case 'video':
  	        var listeners = this._wrapperState.listeners;
  	        if (listeners) {
  	          for (var i = 0; i < listeners.length; i++) {
  	            listeners[i].remove();
  	          }
  	        }
  	        break;
  	      case 'html':
  	      case 'head':
  	      case 'body':
  	        /**
  	         * Components like <html> <head> and <body> can't be removed or added
  	         * easily in a cross-browser way, however it's valuable to be able to
  	         * take advantage of React's reconciliation for styling and <title>
  	         * management. So we just document it and throw in dangerous cases.
  	         */
  	         true ?  false ? invariant(false, '<%s> tried to unmount. Because of cross-browser quirks it is impossible to unmount some top-level components (eg <html>, <head>, and <body>) reliably and efficiently. To fix this, have a single top-level component that never unmounts render these elements.', this._tag) : _prodInvariant('66', this._tag) : void 0;
  	        break;
  	    }
  	
  	    this.unmountChildren(safely);
  	    ReactDOMComponentTree.uncacheNode(this);
  	    EventPluginHub.deleteAllListeners(this);
  	    this._rootNodeID = 0;
  	    this._domID = 0;
  	    this._wrapperState = null;
  	
  	    if (false) {
  	      setAndValidateContentChildDev.call(this, null);
  	    }
  	  }