while (iter.getIndex() >= iter.getBeginIndex()) {
int start = iter.getBeginIndex(); while (iter.getIndex() >= iter.getBeginIndex()) {
	public int previous() {		if (iter.getIndex() == iter.getBeginIndex())			return DONE;		//int start = iter.getBeginIndex();		while (iter.getIndex() >= iter.getBeginIndex()) {			char c = iter.previous();			if (c == CharacterIterator.DONE)				break;			int type = Character.getType(c);			if (type != Character.NON_SPACING_MARK && !isLowSurrogate(c) && !isLVT(c))				break;			// Now we need some lookahead.			char ahead = iter.previous();			if (ahead == CharacterIterator.DONE) {				iter.next();				break;			}			char ahead2 = iter.previous();			iter.next();			iter.next();			if (ahead2 == CharacterIterator.DONE)				break;			int aheadType = Character.getType(ahead);			if (aheadType == Character.PARAGRAPH_SEPARATOR)				break;			if (isLVT(c) && !isLVT(ahead))				break;			if (!isLVT(c) && type != Character.NON_SPACING_MARK && isL(ahead))				break;			if (!isV(c) && !isT(c) && type != Character.NON_SPACING_MARK && isV(ahead))				break;			if (!isT(c) && type != Character.NON_SPACING_MARK && isT(ahead))				break;			if (isLowSurrogate(c) && !isHighSurrogate(ahead))				break;			if (!isLowSurrogate(c) && isHighSurrogate(ahead))				break;			if (isLowSurrogate(ahead) && !isHighSurrogate(ahead2))				break;		}		return iter.getIndex();	}