protected override ITransientMap doAssoc(object key, object val)
{
int i = IndexOfKey(key);
if (i >= 0) //already have key,
{
if (_array[i + 1] != val) //no change, no op
_array[i + 1] = val;
}
else //didn't have key, grow
{
if (_len >= _array.Length)
return ((ITransientMap)PersistentHashMap.create(_array).asTransient()).assoc(key, val);
_array[_len++] = key;
_array[_len++] = val;
}
return this;
}