public static function createSentry(
		UserProviderInterface $userProvider = null,
		GroupProviderInterface $groupProvider = null,
		ThrottleProviderInterface $throttleProvider = null,
		SessionInterface $session = null,
		CookieInterface $cookie = null,
		$ipAddress = null
	)
	{
		$userProvider = $userProvider ?: new UserProvider(new NativeHasher);

		return new BaseSentry(
			$userProvider,
			$groupProvider    ?: new GroupProvider,
			$throttleProvider ?: new ThrottleProvider($userProvider),
			$session          ?: new NativeSession,
			$cookie           ?: new NativeCookie,
			$ipAddress        ?: static::guessIpAddress()
		);
	}