GENERIC MODULEBrandedSet (Elem); IMPORT Word; PROCEDUREEqual (a, b : T) : BOOLEAN = BEGIN RETURN a.equal(b) END Equal; PROCEDUREHash (a : T) : Word.T = VAR iter := a.iterate(); e : Elem.T; hash := 0; BEGIN WHILE iter.next(e) DO hash := Word.Plus(hash, Elem.Hash(e)) END; RETURN hash END Hash; BEGIN END BrandedSet.