public static function init(...$arguments) {
		assert(!isset(self::$instance[static::class]), sprintf('Class "%s" already initialized.', get_class()));

		static::__static();
		$parameters = self::determineParameters($arguments);

		return new static(...$parameters);
	}