resource Stack type result = enum(OK, OVERFLOW, UNDERFLOW) op push(item: int) returns r: result op pop(res item: int) returns r: result body Stack(size: int) var store[1:size]: int, top: int := 0 proc push(item) returns r if top store[++top] := item; r := OK [] top=size -> r := OVERFLOW fi end proc pop(item) returns r if top>0 -> item := store[top--]; r := OK [] top=0 -> r := UNDERFLOW fi end end Stack resource Stack_User() import Stack var x: Stack.result var s1, s2: cap Stack var y: int s1 := create Stack(10) vmcap := create vm() on s2 := create Stack(20) on vmcap ... s1.push(4); s1.push(37); s2.push(98) ... if (x := s2.pop(y)) != OK -> ... fi ... end