class interface P_DICT_NODE[G,K->HASHABLE]

feature(s) from HASHABLE
   hash_code: INTEGER
      --  The hash-code value of Current.

      ensure
         key_code: Result = key.hash_code;
         good_hash_value: Result >= 0

feature(s) from P_DICT_NODE
   --  Data

   item: G

   set_item (it: G)
      --  Change item.

      ensure
         keep_reference: it = item

   key: K

   set_key (ke: K)
      --  Change key.

      require
         not_void: not is_void(ke)
      ensure
         keep_reference: key = ke

   is_void (x: ANY): BOOLEAN
      --  Is value void? (generic)


feature(s) from P_DICT_NODE
   --  General

   is_equal (other: like Current): BOOLEAN
      --  Is other attached to an object considered equal to 
      --  current object ?

      require
         other_not_void: other /= Void
      ensure
         consistent: standard_is_equal(other) implies Result;
         symmetric: Result implies other.is_equal(Current)

   out: STRING
      --  Create a new string containing terse printable 
      --  representation of current object.


invariant
   hash: key /= Void implies hash_code = key.hash_code;

end of P_DICT_NODE[G,K->HASHABLE]