protected function _array_merge_recursive_distinct ($array) {
		$arrays = func_get_args();
		$base = array_shift($arrays);
		if (!is_array($base)) $base = empty($base) ? [] : [$base];
		foreach ($arrays as $append) {
			if (!is_array($append)) $append = [$append];
			foreach ($append as $key => $value) {
				if (!array_key_exists($key, $base)) {
					$base[$key] = $append[$key];
					continue;
				}
				if (is_array($value) or is_array($base[$key])) {
					$base[$key] = $this->_array_merge_recursive_distinct($base[$key], $append[$key]);
				} else {
					$base[$key] = $value;
				}
			}
		}
		return $base;
	}