/// <summary>
/// TBD
/// </summary>
/// <param name="oldGossip">TBD</param>
/// <param name="newGossip">TBD</param>
/// <param name="selfUniqueAddress">TBD</param>
/// <returns>TBD</returns>
internal static ImmutableList <ReachableMember> DiffReachable(Gossip oldGossip, Gossip newGossip, UniqueAddress selfUniqueAddress)
{
if (newGossip.Equals(oldGossip))
{
return(ImmutableList <ReachableMember> .Empty);
}
return(oldGossip.Overview.Reachability.AllUnreachable
.Where(node => newGossip.HasMember(node) && newGossip.Overview.Reachability.IsReachable(node) && !node.Equals(selfUniqueAddress))
.Select(node => new ReachableMember(newGossip.GetMember(node)))
.ToImmutableList());
}