function ClockDate(year, month, date, hour, minute, second, ms) {
					// the Date constructor called as a function, ref Ecma-262 Edition 5.1, section 15.9.2.
					// This remains so in the 10th edition of 2019 as well.
					if (!(this instanceof ClockDate)) {
						return new NativeDate(ClockDate.clock.now).toString();
					}

					// if Date is called as a constructor with 'new' keyword
					// Defensive and verbose to avoid potential harm in passing
					// explicit undefined when user does not pass argument
					switch (arguments.length) {
						case 0:
							return new NativeDate(ClockDate.clock.now);
						case 1:
							return new NativeDate(year);
						case 2:
							return new NativeDate(year, month);
						case 3:
							return new NativeDate(year, month, date);
						case 4:
							return new NativeDate(year, month, date, hour);
						case 5:
							return new NativeDate(year, month, date, hour, minute);
						case 6:
							return new NativeDate(
								year,
								month,
								date,
								hour,
								minute,
								second
							);
						default:
							return new NativeDate(
								year,
								month,
								date,
								hour,
								minute,
								second,
								ms
							);
					}
				}
@param {number} year
@param {number} month
@param {number} date
@param {number} hour
@param {number} minute
@param {number} second
@param {number} ms

@returns {Date}