<> <> <> <<>> RefAnyStream: DEFINITIONS = { <> Handle: TYPE = REF Object; Object: TYPE = RECORD[ procs: ObjectProcsHandle, data: REF ANY _ NIL ]; ObjectProcsHandle: TYPE = REF ObjectProcs; ObjectProcs: TYPE = RECORD[ get: PROC[Handle] RETURNS[REF ANY], put: PROC[Handle, REF ANY], putBack: PROC[Handle, REF ANY], flush: PROC[Handle], close: PROC[Handle], endOf: PROC[Handle] RETURNS[BOOLEAN], empty: PROC[Handle] RETURNS[BOOLEAN] ]; <> Error: ERROR [ec: ErrorCode]; ErrorCode: TYPE = { NotImplementedForThisStream, EndOfStream, <> StreamClosed, <> BadIndex <> }; }.