private static IEnumerable<PopupVerticalAlignment> GetVerticalAlignmentsInOrderOfPreference(PopupVerticalAlignment preferredVerticalAlignment) { var startIndex = verticalAlignments.IndexOf(preferredVerticalAlignment); var index = startIndex; do { yield return verticalAlignments[index]; ++index; if (index == verticalAlignments.Count) { index = 0; } } while (index != startIndex); }