public AtomicBlockStore(int shift, int dirtySize, short[] initial) { this.side = 1 << shift; this.shift = shift; this.doubleShift = shift << 1; int size = side * side * side; blockIds = new AtomicShortArray(size); auxStore = new AtomicIntReferenceArrayStore<T>(size); dirtyX = new byte[dirtySize]; dirtyY = new byte[dirtySize]; dirtyZ = new byte[dirtySize]; if (initial != null) { for (int i = 0; i < Math.min(initial.length, size); i++) { blockIds.set(i, initial[i]); } } }