static public FltVar CardinalityMax(FltVar[] list)
        {
            FltVar chosenVar = null;

            for (int idx = 0; idx < list.Length; ++idx)
            {
                FltVar var = list[idx];
                if (!var.IsBound() &&
                    !var.IsEmpty() &&
                    (ReferenceEquals(chosenVar, null) ||
                     (chosenVar.Domain.Cardinality < var.Domain.Cardinality)))
                {
                    chosenVar = var;
                }
            }

            return(chosenVar);
        }
        static public FltVar MostConstrained(FltVar[] list)
        {
            FltVar chosenVar = null;

            for (int idx = 0; idx < list.Length; ++idx)
            {
                FltVar var = list[idx];
                if (!var.IsBound() &&
                    !var.IsEmpty() &&
                    (ReferenceEquals(chosenVar, null) ||
                     chosenVar.ConstraintList.Count < var.ConstraintList.Count))
                {
                    chosenVar = var;
                }
            }

            return(chosenVar);
        }