code: function(lineIndex, e) {
  		if (lineIndex === undefined) { return; }
  		var annotationModel = this._annotationModel;
  		if (!annotationModel) { return; }
  		var view = this._view;
  		var model = view.getModel();
  		var start = model.getLineStart(lineIndex);
  		var end = model.getLineEnd(lineIndex, true);
  		if (model.getBaseModel) {
  			start = model.mapOffset(start);
  			end = model.mapOffset(end);
  			model = model.getBaseModel();
  		}
  		var annotation, iter = annotationModel.getAnnotations(start, end);
  		while (!annotation && iter.hasNext()) {
  			var a = iter.next();
  			if (!this.isAnnotationTypeVisible(a.type)) { continue; }
  			if (model.getLineAtOffset(a.start) !== model.getLineAtOffset(start)) { continue; }
  			annotation = a;
  		}
  		if (annotation) {
  			var tooltip = mTooltip.Tooltip.getTooltip(this._view);
  			if (tooltip) {
  				tooltip.hide();
  			}
  			if (annotation.expanded) {
  				annotation.collapse();
  			} else {
  				annotation.expand();
  			}
  		}
  	}
docs: /* @callback