Returns an ArrayMap which has added or overwritten the given key/value. If the map already contained that mapping (equal keys and values) then it returns the identically same map.