private Word.Range AdjustRange(Word.Range range, Annotation annotation)
 {
     String initialText = range.GetCleanedText();
     bool match = IsMatch(range, annotation);
     String rangeText = "";
     int offset = Int32.MinValue;
     object rangeStart = range.Start;
     object rangeEnd = range.End;
     int rangeLength = (int)rangeEnd - (int)rangeStart - 1;
     object selectionStart = annotation.Selection[0];
     try
     {
         while (!match)
         {
             offset = range.Text.IndexOf((char)selectionStart);
             object start = range.Start + (int)offset;
             object end = range.Start + rangeLength + (int)offset;
             do
             {
                 //extend the range to the selection length
                 range = document.Range(ref start, ref end);
                 range.TextRetrievalMode.IncludeHiddenText = false;
                 rangeText = range.GetCleanedText();
                 end = (int)end + 1;
             } while (rangeText.Length != annotation.Selection.GetCleanedText().Length);
             if (IsMatch(range, annotation))
             {
                 match = true;
             }
             else if (offset < 0)
             {
                 //if not found return initial range
                 return document.Range(ref rangeStart, ref rangeEnd);
             }
             else if (offset == 0)
             {
                 start = (int)start + 1;
                 end = (int)start + 1;
                 range = document.Range(ref start, ref end);
             }
         }
     }
     catch (NullReferenceException nre)
     {
         Log.Exception(nre);
         return null;
     }
     return range;
 }
 /// <summary>
 /// Determines if a Word range is matching the selected text for an annotation
 /// </summary>
 /// <param name="range">The Word range to be verified.</param>
 /// <param name="annotation">The displayed annotation.</param>
 /// <returns>True if the range contains the annotated text and does not start with white spaces.</returns>
 private bool IsMatch(Word.Range range, Annotation annotation)
 {
     String rangeText = range.GetCleanedText();
     String selectedText =  annotation.Selection.GetCleanedText();
     bool match = (rangeText == selectedText) && (range.Text[0] == annotation.Selection[0]);
     match = match && (!range.Text[0].ToString().IsWhiteSpace());
     match = match && (!range.Text[range.Text.Length -1].ToString().IsWhiteSpace());
     return match;
 }