code: public int preceding(int offset) {
          // NOTE:  This implementation is here solely because we can't add new
          // abstract methods to an existing class.  There is almost ALWAYS a
          // better, faster way to do this.
          int pos = following(offset);
          while (pos >= offset && pos != DONE)
              pos = previous();
          return pos;
      }
docs: Sets the iterator's current iteration position to be the last
  boundary position preceding the specified position.  (Whether the
  specified position is itself a boundary position or not doesn't
  matter-- this function always moves the iteration position to the
  last boundary before the specified position.)  If the specified
  position is the starting position, returns DONE.
  @param offset The character position to start searching from.
  @return The position of the last boundary position preceding
  "offset" (whether of not "offset" itself is a boundary position),
  or DONE if "offset" is the starting offset of the iterator.