IEnumerable <ReferenceSegment> GetReferenceSegmentsFrom(ReferenceSegment refSeg, bool forward) { if (refSeg == null) { yield break; } var currSeg = refSeg; while (true) { currSeg = forward ? references.GetNextSegment(currSeg) : references.GetPreviousSegment(currSeg); if (currSeg == null) { currSeg = forward ? references.FirstSegment : references.LastSegment; } if (currSeg == refSeg) { break; } yield return(currSeg); } }