while (index >=0 && depth >= dp ) {
while (index >  0) {
	protected boolean iterate_preceding(String en, int dp, boolean special)	throws NavException {		int index = getCurrentIndex() - 1;		int t,d;		int depth = getTokenDepth(index);		//int size = vtdBuffer.size();		while (index >=0 && depth >= dp ) {			if (isElementOrDocument(index)) {				depth = getTokenDepth(index);				context[0] = depth;				//context[depth]=index;				if (depth>0){					context[depth] = index;					t = index -1;					for (int i=depth-1;i>0;i--){						if (context[i]>index || context[i] == -1){							while(t>0){								d = getTokenDepth(t);								if ( d == i && isElement(t)){									context[i] = t;									break;								}								t--;							}													}else							break;					}				}else {									}				//dumpContext();				if (matchElement(en)|| special) {										resolveLC();					return true;				}			} 			index--;		}		return false;		}