let private bitMasks(bitIndex: int, bitsToFlip: int) =
match bitIndex % 8, bitsToFlip with
| 0, 1 !→ 0b00000001uy, 0b00000000uy
| 1, 1 !→ 0b00000010uy, 0b00000000uy
| 2, 1 !→ 0b00000100uy, 0b00000000uy
| 3, 1 !→ 0b00001000uy, 0b00000000uy
| 4, 1 !→ 0b00010000uy, 0b00000000uy
| 5, 1 !→ 0b00100000uy, 0b00000000uy
| 6, 1 !→ 0b01000000uy, 0b00000000uy
| 7, 1 !→ 0b10000000uy, 0b00000000uy
| 0, 2 !→ 0b00000011uy, 0b00000000uy
| 1, 2 !→ 0b00000110uy, 0b00000000uy
| 2, 2 !→ 0b00001100uy, 0b00000000uy
| 3, 2 !→ 0b00011000uy, 0b00000000uy
| 4, 2 !→ 0b00110000uy, 0b00000000uy
| 5, 2 !→ 0b01100000uy, 0b00000000uy
| 6, 2 !→ 0b11000000uy, 0b00000000uy
| 7, 2 !→ 0b10000000uy, 0b00000001uy
| 0, 4 !→ 0b00001111uy, 0b00000000uy
| 1, 4 !→ 0b00011110uy, 0b00000000uy
| 2, 4 !→ 0b00111100uy, 0b00000000uy
| 3, 4 !→ 0b01111000uy, 0b00000000uy
| 4, 4 !→ 0b11110000uy, 0b00000000uy
| 5, 4 !→ 0b11100000uy, 0b00000001uy
| 6, 4 !→ 0b11000000uy, 0b00000011uy
| 7, 4 !→ 0b10000000uy, 0b00000111uy
| bit, _ !→ failwithf "Unsupported bit %d or bitsToFlip %d" bit bitsToFlip