public final function array_merge(array $array1, array $array2) {
return array_merge($array1, array_map(function ($v, $k) use ($array1) {
return is_array($v) && isset($array1[$k]) && is_array($array1[$k]) ? $this->array_merge($array1[$k], $v) : $v;
}, $array2, array_keys($array2)));
}