copy_string(aReadable.BeginReading(), aReadable.EndReading(), BeginWriting());
nsReadingIterator<CharT> fromBegin, fromEnd; nsWritingIterator<CharT> toBegin; copy_string(aReadable.BeginReading(fromBegin), aReadable.EndReading(fromEnd), BeginWriting(toBegin));
basic_nsAWritableString<CharT>::do_AssignFromReadable( const basic_nsAReadableString<CharT>& aReadable )  {    SetLength(0);    SetLength(aReadable.Length());      // first setting the length to |0| avoids copying characters only to be overwritten later      //  in the case where the implementation decides to re-allocate    copy_string(aReadable.BeginReading(), aReadable.EndReading(), BeginWriting());  }