code: private static int compareLexical(BitVector a, BitVector b) {
  		final int aSize = a.size();
  		final int bSize = b.size();
  		if (aSize == bSize) return compareNumeric(a, b); // more efficient
  		final int size = Math.min(aSize, bSize);
  		final int aStart = a.finish - size;
  		final int bStart = b.finish - size;
  		for (int i = size - 1; i >= 0; i--) {
  			boolean aBit = a.getBitAdj(aStart + i);
  			boolean bBit = b.getBitAdj(bStart + i);
  			if (aBit != bBit) return bBit ? -1 : 1;
  		}
  		return aSize < bSize ? -1 : 1;
  	}
docs: a, b not null a size not greater than b size