module 0x2::Token { struct Token has store { value: u64 } public fun burn(_unused: bool, token: Token) { let Token { value } = token; assert!(value != 0, 42); } spec burn { aborts_if token.value == 0; } } module 0x2::Liquid { use 0x2::Token; struct Liquid has key, store {} fun l_burn(token: Token::Token>) { Token::burn(false, token); } }