Currently, the block positions that block bounds are constructed from can be mutable and later mutated, affecting the block bounds. This trait leads to strange behavior, such as that fixed by NucleoidMC/D-Coudre#23. The constructor should throw an exception for mutable block positions and factory methods should convert mutable block positions to immutable block positions to prevent issues caused by mutable block positions from occurring.