/// ------------------------------------------------------------------------------------
		/// <summary>
		/// Fixes the paragraph's analysis.
		/// </summary>
		/// <param name="para">The paragraph.</param>
		/// ------------------------------------------------------------------------------------
		private static void FixParaAnalysis(IScrTxtPara para)
		{
			// If it has any word-level analysis, we need to reparse the whole text.
			if ((from segment in para.SegmentsOS where segment.AnalysesRS.Count > 0 select segment).FirstOrDefault() == null)
			{
				// No analyses; just resegment it.
				using (ParagraphParser parser = new ParagraphParser(para))
				{
					parser.CollectPreExistingParaAnnotations();
					SegmentMaker segmentMaker = new SegmentMaker(para.Contents, para.Cache.WritingSystemFactory, parser);
					segmentMaker.Run();
					if (segmentMaker.Segments.Count < para.SegmentsOS.Count)
					{
						// The paragraph has more segments than it should have, so remove any
						// extras that are floating around.
						for (int i = para.SegmentsOS.Count - 1; i >= segmentMaker.Segments.Count; i--)
							para.SegmentsOS.RemoveAt(i);
					}
				}
			}
			else
			{
				// Reparse the whole thing.
				ParagraphParser.ParseParagraph(para);
			}
		}