<> <> DIRECTORY Globals, StagePool; StagePoolImpl: CEDAR PROGRAM EXPORTS StagePool = { OPEN Globals; <> freeList: Stage _ NIL; New: PUBLIC PROC[] RETURNS [stage: Stage] = { IF freeList # NIL THEN { stage _ freeList; freeList _ freeList.prev; } ELSE stage _ NEW[StageRec]; }; Free: PUBLIC PROC[stage: Stage] = { stage.prev _ freeList; freeList _ stage; }; }.