private static void Engage(Proposer proposer, Accepter accepter) { proposer.EngagedTo = accepter; accepter.EngagedTo = proposer; }
private static void Free(Proposer proposer) { proposer.EngagedTo = null; }
private static int Score(Proposer proposer, Accepter accepter) => proposer.PreferenceOrder.ToList().IndexOf(accepter);
private static bool IsEngaged(Proposer proposer) => proposer.EngagedTo != null;
public bool PrefersOverCurrent(Proposer newProposer) => EngagedTo == null || PreferenceOrder.IndexOf(newProposer) < PreferenceOrder.IndexOf(EngagedTo);