offset = so;
docOffset = so;
	protected VTDNav(		int RootIndex,		int enc,		boolean NS,		int depth,		IByteBuffer x,		ILongBuffer vtd,		ILongBuffer l1,		ILongBuffer l2,		IIntBuffer l3,		int so, // start offset of the starting offset(in byte) 	int length) // lengnth of the XML document (in byte)) 	{		// initialize all buffers		if (l1 == null			|| l2 == null			|| l3 == null			|| vtd == null			|| x == null			|| depth < 0			|| RootIndex < 0 //|| encoding <= FORMAT_UTF8			//|| encoding >= FORMAT_ISO_8859_1			|| so < 0			|| length < 0) {			throw new IllegalArgumentException();		}		l1Buffer = l1;		l2Buffer = l2;		l3Buffer = l3;		vtdBuffer = vtd;		XMLDoc = x;		encoding = enc;		//System.out.println("encoding " + encoding);		rootIndex = RootIndex;		nestingLevel = depth + 1;		ns = NS; // namespace aware or not		if (ns == false)		    MASK_TOKEN_OFFSET = 0x000000007fffffffL; // this allows xml size to be 2GB 		else // if there is no namespace		    MASK_TOKEN_OFFSET = 0x000000003fffffffL;						atTerminal = false; //this variable will only change value during XPath eval		// initialize the context object		context = new int[nestingLevel];		//depth value is the first entry in the context because root is singular.		context[0] = 0;		//set the value to zero		for (int i = 1; i < nestingLevel; i++) {			context[i] = -1;		}		//currentOffset = 0;		//contextStack = new ContextBuffer(1024, nestingLevel + 7);		contextStack = new ContextBuffer(10, nestingLevel + 9);		contextStack2 = new ContextBuffer(10, nestingLevel+9);		stackTemp = new int[nestingLevel + 9];		// initial state of LC variables		l1index = l2index = l3index = -1;		l2lower = l3lower = -1;		l2upper = l3upper = -1;		offset = so;		docLen = length;		//System.out.println("offset " + offset + "  length " + length);		//printL2Buffer();		vtdSize = vtd.size();		//recentNS = -1;	}