public async Task AddOverload(CompletionData data, CancellationToken cancelToken)
        {
            var tooltipInformation = await data.CreateTooltipInformation(false, cancelToken);

            if (tooltipInformation == null || tooltipInformation.IsEmpty || cancelToken.IsCancellationRequested)
            {
                return;
            }

            using (var layout = new Pango.Layout(PangoContext)) {
                layout.FontDescription = Theme.Font;
                layout.SetMarkup(tooltipInformation.SignatureMarkup);
                int w, h;
                layout.GetPixelSize(out w, out h);
                if (w >= Allocation.Width - 10)
                {
                    tooltipInformation = await data.CreateTooltipInformation(true, cancelToken);
                }
            }
            if (cancelToken.IsCancellationRequested)
            {
                return;
            }
            AddOverload(tooltipInformation);
        }
        public async Task AddOverload(CompletionData data, CancellationToken cancelToken)
        {
            try {
                var tooltipInformation = await data.CreateTooltipInformation(false, cancelToken);

                if (tooltipInformation == null || tooltipInformation.IsEmpty || cancelToken.IsCancellationRequested)
                {
                    return;
                }

                using (var layout = new Pango.Layout(headLabel.PangoContext)) {
                    layout.FontDescription = Theme.Font.ToPangoFont();
                    layout.SetMarkup(tooltipInformation.SignatureMarkup);
                    int w, h;
                    layout.GetPixelSize(out w, out h);
                    if (w >= Size.Width - 10)
                    {
                        tooltipInformation = await data.CreateTooltipInformation(true, cancelToken);
                    }
                }
                if (cancelToken.IsCancellationRequested)
                {
                    return;
                }
                AddOverload(tooltipInformation);
            } catch (Exception e) {
                LoggingService.LogError("Error while adding overload : " + data, e);
            }
        }
        public void AddOverload(CompletionData data)
        {
            var tooltipInformation = data.CreateTooltipInformation(false);

            if (tooltipInformation.IsEmpty)
            {
                return;
            }

            using (var layout = new Pango.Layout(PangoContext)) {
                layout.FontDescription = FontService.GetFontDescription("Editor");
                layout.SetMarkup(tooltipInformation.SignatureMarkup);
                int w, h;
                layout.GetPixelSize(out w, out h);
                if (w >= Allocation.Width - 10)
                {
                    tooltipInformation = data.CreateTooltipInformation(true);
                }
            }
            AddOverload(tooltipInformation);
        }
		public void AddOverload (CompletionData data)
		{
			var tooltipInformation = data.CreateTooltipInformation (false);
			if (string.IsNullOrEmpty (tooltipInformation.SignatureMarkup))
				return;

			using (var layout = new Pango.Layout (PangoContext)) {
				var des = FontService.GetFontDescription ("Editor");
				layout.FontDescription = des;
				layout.SetMarkup (tooltipInformation.SignatureMarkup);
				int w, h;
				layout.GetPixelSize (out w, out h);
				if (w >= Allocation.Width - 10) {
					tooltipInformation = data.CreateTooltipInformation (true);
				}
			}
			AddOverload (tooltipInformation);
		}
		public async Task AddOverload (CompletionData data, CancellationToken cancelToken)
		{
			var tooltipInformation = await data.CreateTooltipInformation (false, cancelToken);
			if (tooltipInformation == null || tooltipInformation.IsEmpty || cancelToken.IsCancellationRequested)
				return;

			using (var layout = new Pango.Layout (PangoContext)) {
				layout.FontDescription = FontService.GetFontDescription ("Editor");
				layout.SetMarkup (tooltipInformation.SignatureMarkup);
				int w, h;
				layout.GetPixelSize (out w, out h);
				if (w >= Allocation.Width - 10) {
					tooltipInformation = await data.CreateTooltipInformation (true, cancelToken);
				}
			}
			if (cancelToken.IsCancellationRequested)
				return;
			AddOverload (tooltipInformation);
		}
		public async Task AddOverload (CompletionData data, CancellationToken cancelToken)
		{
			try {
				var tooltipInformation = await data.CreateTooltipInformation (false, cancelToken);
				if (tooltipInformation == null || tooltipInformation.IsEmpty || cancelToken.IsCancellationRequested)
					return;

				using (var layout = new Pango.Layout (PangoContext)) {
					layout.FontDescription = Theme.Font;
					layout.SetMarkup (tooltipInformation.SignatureMarkup);
					int w, h;
					layout.GetPixelSize (out w, out h);
					if (w >= Allocation.Width - 10) {
						tooltipInformation = await data.CreateTooltipInformation (true, cancelToken);
					}
				}
				if (cancelToken.IsCancellationRequested)
					return;
				AddOverload (tooltipInformation);
			} catch (Exception e) {
				LoggingService.LogError ("Error while adding overload : " + data, e);
			}
		}