// use cipher::KeyIvInit;
// use eme2::Eme2;
// use threefish::{Threefish256, Threefish512, Threefish1024};
//
// // If we uncomment the line below, the compiler will safely REJECT the code!
// // type ThreefishEme2 = Eme2<Threefish256>;
//
// #[test]
// fn test_threefish_compilation_fails_safely() {
// // Threefish is an interesting edge-case because it has block sizes of 256, 512, and 1024 bits (32, 64, and 128 bytes).
// //
// // EME2 (as defined by IEEE P1619.2) ONLY supports 128-bit block ciphers.
// // This is because the internal padding and Galois Field arithmetic (`mult_by_two`)
// // operates explicitly over the GF(2^128) polynomial (x^128 + x^7 + x^2 + x + 1).
// //
// // If you were to pass a 256-bit block cipher like Threefish256 into this mode,
// // it would cause severe cryptographic and memory corruption bugs.
// //
// // Luckily, because we architected `Eme2<C>` using RustCrypto's strict typing system
// // and enforced the bound: `C: BlockCipherEncrypt + BlockCipherDecrypt + BlockSizeUser<BlockSize = U16>`
// //
// // The Rust compiler GUARANTEES at compile-time that no one can accidentally plug
// // a non-128-bit cipher into EME2. It will throw a trait bound error!
// }