private static ISingleEyeGazeDataSelector ResolveSelector(EyeSelectionStrategy strategy)
        {
            switch (strategy)
            {
            case EyeSelectionStrategy.Left:
                return(LeftEyeSelector.Instance);

            case EyeSelectionStrategy.Right:
                return(RightEyeSelector.Instance);

            case EyeSelectionStrategy.Average:
                return(AverageSelector.Instance);

            case EyeSelectionStrategy.StrictAverage:
                return(StrictAverageSelector.Instance);

            default:
                throw new ArgumentOutOfRangeException(nameof(strategy), $"Selected eye selection strategy \"{strategy}\" could not be resolved.");
            }
        }
        public static IObservable <SingleEyeGazeData> SelectEye(this IObservable <GazeData> gazeData, EyeSelectionStrategy strategy)
        {
            ISingleEyeGazeDataSelector selector = ResolveSelector(strategy);

            return(SelectEye(gazeData, selector));
        }