var m: []int;
var p: []a;
type C _;
var bad: []C a; // error: b is not used
function F(a, int) returns (bool) { true }
type Set _;
function EmptySet() returns (Set a);
function G(a, int) returns (Set a) { EmptySet() }
function H(int) returns (Set a);
function {:inline true} K(int) returns (Set a)
{ EmptySet() }
procedure P(x: int, y: bool) returns (z: int, w: bool); // error: "a" is not used
procedure Q(x: int, y: bool) returns (z: int, w: a);
procedure R(x: int, y: bool) returns (z: int, w: Set a);
procedure S(x: a, y: bool) returns (z: int, w: Set a);
function K2(int) returns (Set a) // now ok
{ EmptySet() }