public void JoinClusterWithOneOfflineSeedNode()
        {
            Within(TimeSpan.FromSeconds(30), () =>
            {
                RunOn(() =>
                {
                    Sys.ActorOf(c => c.Receive<UniqueAddress>((address, ctx) =>
                    {
                        _seedUniqueAddress = address;
                        ctx.Sender.Tell("ok");
                    }), "address-receiver");
                    Sys.ActorOf(Props.Create(() => new DomainEventLogger()), "cluster-logger");


                }, _config.NonSeed);
                EnterBarrier("addr-receiver-ready");

                RunOn(() =>
                {
                    _seedUniqueAddress = Cluster.Get(_seedSystem.Value).SelfUniqueAddress;
                    _seedSystem.Value.ActorOf(Props.Create(() => new DomainEventLogger()), "clusterLogger");
                    var probe = CreateTestProbe(_seedSystem.Value);
                    _seedSystem.Value.ActorSelection(new RootActorPath(GetAddress(_config.NonSeed)) / "user" / "address-receiver").Tell(_seedUniqueAddress, probe.Ref);
                    probe.ExpectMsg("ok", TimeSpan.FromSeconds(5));
                }, _config.Seed);
                EnterBarrier("addr-transferred");

                RunOn(() =>
                {
                    Cluster.Get(_seedSystem.Value).JoinSeedNodes(SeedNodes);
                    AwaitCondition(() => Cluster.Get(_seedSystem.Value).ReadView.IsSingletonCluster);
                    _seedSystem.Value.ActorOf(Props.Create(() => new LeaderSynchronizer()), "leader-sync");
                }, _config.Seed);
                EnterBarrier("seed-self-joined");

                RunOn(() =>
                {
                    var unreachableNodeAddress = Cluster.Get(_unavailableSeedSystem.Value).SelfAddress;
                    // terminate the unreachableSeedNode
                    Shutdown(_unavailableSeedSystem.Value, RemainingOrDefault);

                    Cluster.JoinSeedNodes(SeedNodes.Add(unreachableNodeAddress)); // append the unreachable node address
                    AwaitMembersUp(2);
                    Sys.ActorOf(Props.Create(() => new LeaderSynchronizer()), "leader-sync");
                }, _config.NonSeed);
                EnterBarrier("formed-cluster");

               
                /*
                 * Verify that both nodes agree on who the leader is
                 */

                RunOn(() =>
                {
                    var addr2 = GetAddress(_config.NonSeed);
                    var probe2 = CreateTestProbe(_seedSystem.Value);
                    AwaitAssert(() =>
                    {
                        _seedSystem.Value.ActorSelection(new RootActorPath(addr2) / "user" / "leader-sync")
                            .Tell("leader", probe2.Ref);
                        _verifiedLeader = probe2.ExpectMsg<Address>();
                        _verifiedLeader.Should().Be(Cluster.Get(_seedSystem.Value).State.Leader);
                    });


                }, _config.Seed);

                RunOn(() =>
                {
                    AwaitAssert(() =>
                    {
                        _verifiedLeader =
                            Sys.ActorSelection(new RootActorPath(SeedUniqueAddress.Address) / "user" / "leader-sync")
                                .Ask<Address>("leader")
                                .Result;
                        _verifiedLeader.Should().Be(Cluster.State.Leader);
                    });
                }, _config.NonSeed);
                EnterBarrier("verified-leader");
            });
        }