docs: function(info, update) {
  			if (!this._tooltipDiv){
  				return;
  			}
  			
  			var newTooltipContents;
  			if (update && this._tooltipContents) {
  				this._tooltipContents.innerHTML = "";
  				newTooltipContents = this._tooltipContents;
  			} else {
   				newTooltipContents = util.createElement(this._tooltipDiv.ownerDocument, "div"); //$NON-NLS-0$
   			}
   			
  			if (info) {
  				// Render provided content
  				if (info.contents) {
  					if (this._renderImmediateInfo(newTooltipContents, info.contents, info.context)) {
  						this._showContents(newTooltipContents, info, update);
  						return true;
  					}
  				}
  				
  				// If no immediate content, check if hover service plug-ins have content
  				if (this.hover && info.context){
  					this._hoverPromises = this.hover.computeHoverInfo(info.context);
  					if (this._hoverPromises) {
  						var self = this;
  						var promises = this._hoverPromises.slice(0);
  						promises.forEach(function(hoverPromise) {
  							Deferred.when(hoverPromise, function (data) {
  								// Remove this promise from the list so we don't try cancelling it while processing (see hide())
  								if (self._hoverPromises){
  									var index = self._hoverPromises.indexOf(hoverPromise);
  									if (index >= 0){
  										self._hoverPromises.splice(index, 1);
  									}
  								}
  								if (data) {
  									if (self._renderPluginContent(newTooltipContents, data)) {
  										if (data.offsetStart){
  											info.context.offsetStart = data.offsetStart;
  										}
  										if (data.offsetEnd){
  											info.context.offsetEnd = data.offsetEnd;
  										}
  										if (data.allowFullWidth){
  											info.allowFullWidth = data.allowFullWidth;
  										}
  										self._showContents(newTooltipContents, info, update);
  									}
  								}
  							}, function(error) {
  								if (console && error && error.name !== 'Cancel') {
  									console.log("Error computing hover tooltip"); //$NON-NLS-0$
  									console.log(error && error.stack);
  								}
  							});
  						});
  						return true;
  					}
  				}
  			}
  		}