return ((long)docLen)<<32 | offset;
return ((long)docLen)<<32 | docOffset;
	public long getElementFragment() throws NavException {		// a little scanning is needed		// has next sibling case		// if not				int depth = getCurrentDepth();//		 document length and offset returned if depth == -1		if (depth == -1)			return ((long)docLen)<<32 | offset;		int so = getTokenOffset(getCurrentIndex()) - 1;		int length = 0;				// for an element with next sibling		if (toElement(NEXT_SIBLING)) {			int temp = getCurrentIndex();			// rewind 			while (getTokenDepth(temp) < depth) {				temp--;			}			//temp++;			int so2 = getTokenOffset(temp) - 1;			// look for the first '>'			while (getCharUnit(so2) != '>') {				so2--;			}			length = so2 - so + 1;			toElement(PREV_SIBLING);			if (encoding < 3)				return ((long) length) << 32 | so;			else				return ((long) length) << 33 | (so << 1);		}		// for root element		if (depth == 0) {			int temp = vtdBuffer.size() - 1;			boolean b = false;			int so2 = 0;			while (getTokenDepth(temp) == -1) {				temp--; // backward scan				b = true;			}			if (b == false)				so2 =					(encoding < 3)						? (offset + docLen - 1)						: ((offset + docLen) << 1) - 1;			else				so2 = getTokenOffset(temp + 1);			while (getCharUnit(so2) != '>') {				so2--;			}			length = so2 - so + 1;			if (encoding < 3)				return ((long) length) << 32 | so;			else				return ((long) length) << 33 | (so << 1);		}		// for a non-root element with no next sibling		int temp = getCurrentIndex() + 1;		int size = vtdBuffer.size();		// temp is not the last entry in VTD buffer		if (temp < size - 1) {			while (temp < size && getTokenDepth(temp) >= depth) {				temp++;			}			if (temp != size) {				int d =					depth						- getTokenDepth(temp)						+ ((getTokenType(temp) == TOKEN_STARTING_TAG) ? 1 : 0);				int so2 = getTokenOffset(temp) - 1;				int i = 0;				// scan backward				while (i < d) {					if (getCharUnit(so2) == '>')						i++;					so2--;				}				length = so2 - so + 2;				if (encoding < 3)					return ((long) length) << 32 | so;				else					return ((long) length) << 33 | (so << 1);			}			/*			int so2 = getTokenOffset(temp - 1) - 1;			int d = depth - getTokenDepth(temp - 1);			int i = 0;			while (i < d) {			    if (getCharUnit(so2) == '>') {			        i++;			    }			    so2--;			}			length = so2 - so + 2;			if (encoding < 3)			    return ((long) length) << 32 | so;			else			    return ((long) length) << 33 | (so << 1);*/		}		// temp is the last entry		// scan forward search for /> or </cc>		int so2 =			(encoding < 3)				? (offset + docLen - 1)				: ((offset + docLen) << 1) - 1;		int d = depth + 1;		int i = 0;		while (i < d) {			if (getCharUnit(so2) == '>') {				i++;			}			so2--;		}		length = so2 - so + 2;		if (encoding < 3)			return ((long) length) << 32 | so;		else			return ((long) length) << 33 | (so << 1);	}