// ReSharper disable once MethodTooLong
        internal Tuple <Point, Point> Calculate([NotNull] ICircle circle,
                                                [NotNull] Tuple <double, double> xt1And2,
                                                [NotNull] Tuple <double, double> yt1And2)
        {
            if (AreInputFieldsValid(circle,
                                    xt1And2,
                                    yt1And2))
            {
                return(new Tuple <Point, Point>(Point.Unknown,
                                                Point.Unknown));
            }

            double xt1 = xt1And2.Item1;
            double xt2 = xt1And2.Item2;
            double yt1 = yt1And2.Item1;
            double yt2 = yt1And2.Item2;

            var pointOne = new Point(xt1,
                                     yt1);
            var pointTwo = new Point(xt2,
                                     yt2);

            if (!circle.IsPointOnCircle(pointOne))
            {
                pointOne = new Point(xt1,
                                     yt2);
                pointTwo = new Point(xt2,
                                     yt1);

                if (!circle.IsPointOnCircle(pointOne))
                {
                    PointIsNotOnCircle(circle,
                                       pointOne);
                }
            }

            if (!circle.IsPointOnCircle(pointTwo))
            {
                PointIsNotOnCircle(circle,
                                   pointTwo);
            }

            return(new Tuple <Point, Point>(pointOne,
                                            pointTwo));
        }
 internal bool ValidatePoint([NotNull] ICircle circle,
                             [NotNull] Point startPoint)
 {
     return(circle.IsPointOnCircle(startPoint));
 }