public function link($destination, $args = [])
	{
		// edit start
		if (!$this->_createRequestMethodReflection) {
			$this->_createRequestMethodReflection = new \ReflectionMethod(Presenter::class, 'createRequest');
			$this->_createRequestMethodReflection->setAccessible(true);
			$this->_handleInvalidLinkMethodReflection = new \ReflectionMethod(Presenter::class, 'handleInvalidLink');
			$this->_handleInvalidLinkMethodReflection->setAccessible(true);
		}

		try {
			$args = func_num_args() < 3 && is_array($args) ? $args : array_slice(func_get_args(), 1);
			return $this->_createRequestMethodReflection->invoke($this->getPresenter(), $this, $destination, $args, 'link');

		} catch (InvalidLinkException $e) {
			$this->_handleInvalidLinkMethodReflection->invoke($e);
		}
		// edit end
	}