RFindInReadable( const nsACString& aPattern, nsACString::const_iterator& aSearchStart, nsACString::const_iterator& aSearchEnd, const nsCStringComparator& aComparator)
RFindInReadable( const nsAString& aPattern, nsAString::const_iterator& aSearchStart, nsAString::const_iterator& aSearchEnd, const nsStringComparator& aComparator)
RFindInReadable( const nsACString& aPattern, nsACString::const_iterator& aSearchStart, nsACString::const_iterator& aSearchEnd, const nsCStringComparator& aComparator)  {    PRBool found_it = PR_FALSE;    nsACString::const_iterator savedSearchEnd(aSearchEnd);    nsACString::const_iterator searchStart(aSearchStart), searchEnd(aSearchEnd);    while ( searchStart != searchEnd )      {        if ( FindInReadable(aPattern, searchStart, searchEnd, aComparator) )          {            found_it = PR_TRUE;              // this is the best match so far, so remember it            aSearchStart = searchStart;            aSearchEnd = searchEnd;              // ...and get ready to search some more              //  (it's tempting to set |searchStart=searchEnd| ... but that misses overlapping patterns)            ++searchStart;            searchEnd = savedSearchEnd;          }      }      // if we never found it, return an empty range    if ( !found_it )      aSearchStart = aSearchEnd;    return found_it;  }