public IIntellisenseController TryCreateIntellisenseController(ITextView textView, IList <ITextBuffer> subjectBuffers)
        {
            DjangoIntellisenseController controller;

            if (!textView.Properties.TryGetProperty <DjangoIntellisenseController>(typeof(DjangoIntellisenseController), out controller))
            {
                controller = new DjangoIntellisenseController(this, textView);
                textView.Properties.AddProperty(typeof(DjangoIntellisenseController), controller);
                foreach (var buffer in subjectBuffers)
                {
                    controller.ConnectSubjectBuffer(buffer);
                }
            }

            return(controller);
        }
        internal static DjangoIntellisenseController GetOrCreateController(IComponentModel model, ITextView textView)
        {
            DjangoIntellisenseController controller;

            if (!textView.Properties.TryGetProperty <DjangoIntellisenseController>(typeof(DjangoIntellisenseController), out controller))
            {
                var intellisenseControllerProvider = (
                    from export in model.DefaultExportProvider.GetExports <IIntellisenseControllerProvider, IContentTypeMetadata>()
                    from exportedContentType in export.Metadata.ContentTypes
                    where exportedContentType == TemplateContentType.ContentTypeName && export.Value.GetType() == typeof(DjangoIntellisenseControllerProvider)
                    select export.Value
                    ).First();
                controller = new DjangoIntellisenseController((DjangoIntellisenseControllerProvider)intellisenseControllerProvider, textView);
                textView.Properties.AddProperty(typeof(DjangoIntellisenseController), controller);
            }
            return(controller);
        }