docs: function(contentsDiv, data) {
  			var document = this._tooltipDiv.ownerDocument;
  			// data object should be an object containing the type and content.  If no type or unknown type, default to string.
  			if (typeof data !== 'string' && typeof data.content === 'undefined') {
  			    return false;
  			}
  			
  			var sectionDiv = util.createElement(document, "div"); //$NON-NLS-0$;
  			// render the title, if any
  			if (data.title && !data.hiddenTitle) {
  				var titleDiv = util.createElement(document, "div"); //$NON-NLS-0$;
  				if (this.hover.renderMarkDown) {
  					titleDiv.innerHTML = this.hover.renderMarkDown(data.title);
  				} else {
  					titleDiv.textContent = data.title;
  				}
  				titleDiv.classList.add("hoverTooltipTitle"); //$NON-NLS-0$
  				sectionDiv.appendChild(titleDiv);
  			}
  			var contentDiv = util.createElement(document, "div"); //$NON-NLS-0$
  			
  			if (typeof data === 'string'){
  				contentDiv.appendChild(document.createTextNode(data));
  			} else {
  				switch(data.type) {
  					case 'delegatedUI': {
  						// The delegated UI is not included in the 8.0 release, see Bug 449240.
  					}
  					case 'html': {
  						if (data.content){
  							var iframe = document.createElement("iframe");
  							iframe.id = 'HtmlHover'; //$NON-NLS-0$
  							iframe.name = 'HTML Hover'; //$NON-NLS-0$
  							iframe.type = "text/html"; //$NON-NLS-0$
  							iframe.title = data.title || "HTML"; //$NON-NLS-0$
  							iframe.sandbox = "allow-scripts allow-same-origin allow-forms"; //$NON-NLS-0$
  							iframe.style.border = "none"; //$NON-NLS-0$
  							iframe.style.width = "100%"; //$NON-NLS-0$
  							iframe.style.height = "100%"; //$NON-NLS-0$
  							iframe.style.overflow = "auto";  //$NON-NLS-1$
  							// TODO The iframe computed height is always 3px smaller than the tooltip, giving the impression of inconsistent padding
  							this._tooltipDiv.style.paddingBottom = "5px";  //$NON-NLS-0$
  							iframe.srcdoc = data.content;
  							if (data.width) {
  								iframe.style.width = data.width;
  							}
  							if (data.height) {
  								iframe.style.height = data.height;
  							}
  							sectionDiv.style.height = '100%';  //$NON-NLS-0$ // Height should grow on resize
  							contentsDiv.style.height = '100%';  //$NON-NLS-0$
  							sectionDiv.appendChild(iframe);
  						}
  						break;
  					}
  					case 'markdown': {
  						if (this.hover.renderMarkDown) {
  							contentDiv.innerHTML = this.hover.renderMarkDown(data.content);
  						}
  						break;
  					}
  					default: {
  						contentDiv.appendChild(document.createTextNode(data.content));
  					}
  				}
  			}
  			sectionDiv.appendChild(contentDiv);
  			contentsDiv.appendChild(sectionDiv);
  			return true;
  		}