The IMap<K,V>
Interface
// An IMap<K,V> is an object of any class that implements IMap<K,V>.
//
// Interpretation: An IMap<K,V> represents an immutable finite function
// from keys to values.
//
// IMap<K,V> extends java.util.Map<K,V>, so an IMap<K,V> can be used
// as an unmodifiable Map<K,V>.
import java.util.Map;
interface IMap<K,V> extends Map<K,V> {
// Returns an IMap like this one except the given key is associated
// with the given value. The extend operation does not modify this
// IMap.
IMap<K,V> extend (K key, V value);
}