code: public int getOffset() {
          if (dir_ < 0 && offsets_ != null && !offsets_.isEmpty()) {
              // CollationIterator.previousCE() decrements the CEs length
              // while it pops CEs from its internal buffer.
              int i = iter_.getCEsLength();
              if (otherHalf_ != 0) {
                  // Return the trailing CE offset while we are in the middle of a 64-bit CE.
                  ++i;
              }
              assert (i < offsets_.size());
              return offsets_.elementAti(i);
          }
          return iter_.getOffset();
      }
docs: Returns the character offset in the source string
  corresponding to the next collation element. I.e., getOffset()
  returns the position in the source string corresponding to the
  collation element that will be returned by the next call to
  next() or previous(). This value could be any of:
  <ul>
  <li> The index of the <b>first</b> character corresponding to
  the next collation element. (This means that if
  <code>setOffset(offset)</code> sets the index in the middle of
  a contraction, <code>getOffset()</code> returns the index of
  the first character in the contraction, which may not be equal
  to the original offset that was set. Hence calling getOffset()
  immediately after setOffset(offset) does not guarantee that the
  original offset set will be returned.)
  <li> If normalization is on, the index of the <b>immediate</b>
  subsequent character, or composite character with the first
  character, having a combining class of 0.
  <li> The length of the source string, if iteration has reached
  the end.
  </ul>
  
  @return The character offset in the source string corresponding to the
  collation element that will be returned by the next call to
  next() or previous().