public void SetBuffer(IRichTextBuffer buffer)
        {
            var buf = buffer as RichTextBuffer;

            if (buf == null)
            {
                throw new ArgumentException("Passed buffer is of incorrect type", "buffer");
            }

            if (links != null)
            {
                foreach (var link in links)
                {
                    link.NavigateToUrl -= HandleNavigateToUrl;
                }
            }

            Widget.Buffer = buf;
            links         = new LinkLabel [buf.Links.Count];
            for (var i = 0; i < links.Length; i++)
            {
                var link  = buf.Links [i];
                var label = new LinkLabel(link.Text)
                {
                    Uri = link.Href
                };
                label.NavigateToUrl += HandleNavigateToUrl;
                Widget.AddChildAtAnchor((Gtk.Widget)ApplicationContext.Toolkit.GetNativeWidget(label), link.Anchor);
                links [i] = label;
            }
        }