<> <> <> <> DIRECTORY CrRPC USING [Handle, PutArgsProc], CourierBindingProtocol USING [Address, Range]; CourierBinding: CEDAR DEFINITIONS ~ { <> <<>> <> <> <> <> <<>> <> <> <> <> <> <> <<>> Address: TYPE ~ CourierBindingProtocol.Address; Handle: TYPE ~ CrRPC.Handle; PutArgsProc: TYPE ~ CrRPC.PutArgsProc; Range: TYPE ~ CourierBindingProtocol.Range; <> <<>> Predicate: TYPE = PROC [h: Handle, program: CARD, range: Range, clientData: REF] RETURNS [respond: BOOLEAN]; Registration: TYPE ~ REF RegistrationObject; <> RegistrationObject: TYPE = RECORD [ clientData: REF, predicate: Predicate, program: CARD, range: Range ]; <> <<>> Bind: PUBLIC PROC [predicate: CARD, versions: Range, maxHops: CARDINAL, stubPutPred: PutArgsProc] RETURNS [answer: Address]; Register: PROC [program: CARD, range: Range, predicate: Predicate, clientData: REF] RETURNS [r: Registration]; Unregister: PROC [r: Registration]; }...