void QueueInference ()
		{
			var doc = CU as XmlParsedDocument;
			if (defaultSchemaCompletionData != null || doc == null || doc.XDocument == null || inferenceQueued)
				return;
			if (inferredCompletionData == null
			    || (doc.LastWriteTimeUtc - inferredCompletionData.TimeStampUtc).TotalSeconds >= 5
					&& doc.GetErrorsAsync().Result.Count <= inferredCompletionData.ErrorCount)
			{
				inferenceQueued = true;
				System.Threading.ThreadPool.QueueUserWorkItem (delegate {
					try {
						InferredXmlCompletionProvider newData = new InferredXmlCompletionProvider ();
						newData.Populate (doc.XDocument);
						newData.TimeStampUtc = DateTime.UtcNow;
						newData.ErrorCount = doc.GetErrorsAsync().Result.Count;
						this.inferenceQueued = false;
						this.inferredCompletionData = newData;
					} catch (Exception ex) {
						LoggingService.LogInternalError ("Unhandled error in XML inference", ex);
					}
				});
			}	
		}
		void SetDefaultSchema ()

		{
			var filename = DocumentContext.Name;
			if (filename == null)
				return;
			

			defaultSchemaCompletionData = XmlSchemaManager.GetSchemaCompletionDataForFileName (filename);
			if (defaultSchemaCompletionData != null)
				inferredCompletionData = null;
			else
				QueueInference ();

			defaultNamespacePrefix = XmlSchemaManager.GetNamespacePrefixForFileName (filename);

		}