static bool AreAllParentsAccepted(DowngradeResult <RemoteResolveResult> d) { GraphNode <RemoteResolveResult> resultToCheck = d.DowngradedFrom.OuterNode; while (resultToCheck != null) { if (resultToCheck.Disposition != Disposition.Accepted) { return(false); } resultToCheck = resultToCheck.OuterNode; } return(true); }
/// <summary> /// A downgrade is relevant if the node itself was `Accepted`. /// A node that itself wasn't `Accepted`, or has a parent that wasn't accepted is not relevant. /// </summary> /// <param name="d">Downgrade result to analyze</param> /// <returns>Whether the downgrade is relevant.</returns> private static bool IsRelevantDowngrade(DowngradeResult <RemoteResolveResult> d) { return(d.DowngradedTo.Disposition == Disposition.Accepted && AreAllParentsAccepted(d));