// flag: --v2 module 0x42::Generics { spec module { pragma verify = true; } struct R has key { x: T } fun remove(a: address): R acquires R { move_from>(a) } spec remove { pragma opaque; include Remove; } spec schema Remove { a: address; modifies global>(a); ensures !exists>(a); } fun remove_u64(a: address): R acquires R { remove(a) } spec remove_u64 { include Remove; } }