type hashable … type entry … type hashmap … // makeMap returns an empty initialized map of key type kt, // preallocating space for reserve elements. func makeMap(kt types.Type, reserve int64) value { … } // delete removes the association for key k, if any. func (m *hashmap) delete(k hashable) { … } // lookup returns the value associated with key k, if present, or // value(nil) otherwise. func (m *hashmap) lookup(k hashable) value { … } // insert updates the map to associate key k with value v. If there // was already an association for an eq() (though not necessarily ==) // k, the previous key remains in the map and its associated value is // updated. func (m *hashmap) insert(k hashable, v value) { … } // len returns the number of key/value associations in the map. func (m *hashmap) len() int { … } // entries returns a rangeable map of entries. func (m *hashmap) entries() map[int]*entry { … }