code: public static BitStore asStore(boolean[] bits, int offset, int length) {
  		if (bits == null) throw new IllegalArgumentException("null bits");
  		int size = bits.length;
  		if (offset < 0) throw new IllegalArgumentException("negative offset");
  		if (length < 0) throw new IllegalArgumentException("negative length");
  		int finish = offset + length;
  		if (finish < 0) throw new IllegalArgumentException("index overflow");
  		if (finish > size) throw new IllegalArgumentException("exceeds size");
  		return new BooleansBitStore(bits, offset, finish, true);
  	}
docs: Exposes a sub-range of a boolean array as a {@link BitStore}. The
  returned bit store is a live view over the booleans; changes made to the
  array are reflected in bit store and vice versa. The size of the returned
  bit vector equals the length of the range with the least-significant bit
  of the {@link BitStore} taking its value from the lowest-indexed value in
  the range.
  
  @param bits
  an array of bit values
  @param offset
  the index of the first boolean value in the {@link BitStore}
  @param length
  the number of boolean values covered by the {@link BitStore}
  @return a {@link BitStore} over the boolean array