reverse() {
			const newBits = new Int32Array(this.bits.length);
			// reverse all int's first
			const len = Math.floor((this.size - 1) / 32);
			const oldBitsLen = len + 1;
			const bits = this.bits;
			for (let i = 0; i < oldBitsLen; i++) {
				let x = bits[i];
				x = ((x >> 1) & 0x55555555) | ((x & 0x55555555) << 1);
				x = ((x >> 2) & 0x33333333) | ((x & 0x33333333) << 2);
				x = ((x >> 4) & 0x0f0f0f0f) | ((x & 0x0f0f0f0f) << 4);
				x = ((x >> 8) & 0x00ff00ff) | ((x & 0x00ff00ff) << 8);
				x = ((x >> 16) & 0x0000ffff) | ((x & 0x0000ffff) << 16);
				newBits[len - i] = /*(int)*/ x;
			}
			// now correct the int's if the bit size isn't a multiple of 32
			if (this.size !== oldBitsLen * 32) {
				const leftOffset = oldBitsLen * 32 - this.size;
				let currentInt = newBits[0] >>> leftOffset;
				for (let i = 1; i < oldBitsLen; i++) {
					const nextInt = newBits[i];
					currentInt |= nextInt << (32 - leftOffset);
					newBits[i - 1] = currentInt;
					currentInt = nextInt >>> leftOffset;
				}
				newBits[oldBitsLen - 1] = currentInt;
			}
			this.bits = newBits;
		}
Reverses all bits in the array.