private function do_route( $class_name, $method_name, $named_arguments, $on_error ) {
		if ( \is_object( $class_name ) ) {
			return $this->call(
				array(
					$class_name,
					$method_name,
				),
				$named_arguments
			);
		}

		$injector_factory = new Dependency_Injection_Factory(
			$class_name,
			$method_name,
			$named_arguments
		);

		list(
			$obj,
			$dependencies,
			$validators
		) = $injector_factory->build();

		// Check all validators
		foreach ( $validators as $validator ) {
			$message = $validator->validate( $on_error );

			if ( $message ) {
				return $message;
			}
		}

		return $this->call(
			array(
				$obj,
				$method_name,
			),
			$dependencies
		);
	}