public function mergeWith($data)
{
if (is_array($data) || $data instanceof Traversable) {
foreach ($data as $key => $value) {
$this->add($key, $value);
}
} else {
if ($data !== null) {
throw new TInvalidDataTypeException('map_data_not_iterable');
}
}
}