protected int getSize(long value) {
		if (!tree.contains(value)) {
			return -1;
		}
		Long next = value < Long.MAX_VALUE ? tree.ceiling(value + 1) : null;
		Long prev = value > Long.MIN_VALUE ? tree.floor(value - 1) : null;
		
		int i = 0;
		if (prev != null) {
			for (i = 0; i < lengthMasks.length; i++) {
				if (((prev ^ value) & lengthMasks[i]) != 0) {
					break;
				}
			}
		}
		if (next != null) {
			for (; i < lengthMasks.length; i++) {
				if (((next ^ value) & lengthMasks[i]) != 0) {
					break;
				}
			}
		}
		return i + 1;
	}