public static function Merge(array $array1 = null, array $array2 = null){

		//check for the existance of the implementation class
		self::setImplmentationClass();

		//set the input parameters in a try...catch block for better error handling
		try {

			//set the value fo the $inputArray1 parameter
			$array1 = ( ! is_null($array1)) ? $array1 : self::$ArrayHelperClassInstance->getOutputElement();
			
			//set the value fo the $inputArray2 parameter
			$array2 = ( ! is_null($array2)) ? $array2 : self::$ArrayHelperClassInstance->getOutputElement();

			//check if null was supplied for the $key parameter
			if($array === null) throw new ArrayHelperException("NULL \$array1 value passed to ArrayHelper::Merge() method which merges the elements of two arrays. A valid array1 is expected!", 1);

			//check if null value was set for the inputArray paramter
			if($array2 === null) throw new ArrayHelperException("NULL \$array2 value passed to ArrayHelper::Merge() method which merges the elements of two arrays. A valid array2 is expected!", 1);
			
			//call the implementation class to merge the input array
			self::$ArrayHelperClassInstance->Merge($array1, $array2);

			//return the static instance
			return new static;

		} 

		//catch the error messages here
		catch (ArrayHelperException $ArrayHelperExceptionInstance) {

			//diplay the error message
			$ArrayHelperExceptionInstance->errorShow();
			
		}
	}