typedef /*@abstract@*/ int *abst1; typedef /*@abstract@*/ int abst2; /*@access abst1@*/ /*@access abst2@*/ abst1 f1 (int *x) { return x; /* 1. Function returns reference to parameter x, 2. Implicitly temp storage x returned as implicitly only: x */ } abst1 f2 (/*@exposed@*/ int *x) { return (abst1) x; /* 3. Implicitly dependent storage x returned as implicitly only */ } abst2 g1 (int x) { return x; } abst2 g2 (int x) { return (abst2) x; }