private static SolutionSpec TrySolve(ProblemSpec problem)
        {
            if (problem.Polygons.Length > 1 || !problem.Polygons.Single().IsConvex() || problem.Polygons.Single().GetSignedSquare() < 0)
            {
                return(null);
            }

            var problemPolygon = problem.Polygons[0];

            return(ConvexPolygonSolver.TrySolveInBestShot(problem, problemPolygon.GetConvexBoundary()));
        }