refinement Key is K Value is V Map[Key, Value] is HashtableChain { make: --> Map[Key, Value] is HashtableChain(); put: Map[Key, Value] k:Key v:Value --> Map[Key, Value] is void put(K k, V v); get: Map[Key, Value] k:Key -->? Value is V get(K k); remove: Map[Key, Value] k:Key --> Map[Key, Value] is void remove(K k); isEmpty: Map[Key, Value] is boolean isEmpty(); contains: Map[Key, Value] k:Key is boolean containsKey(K k); } end refinement