diff --git a/internal/ceres/generate_bundle_adjustment_tests.py b/internal/ceres/generate_bundle_adjustment_tests.py
index b36cf66..89cf8c7 100644
--- a/internal/ceres/generate_bundle_adjustment_tests.py
+++ b/internal/ceres/generate_bundle_adjustment_tests.py
@@ -121,15 +121,17 @@
 
 TEST_F(BundleAdjustmentTest,
        %(test_class_name)s) {  // NOLINT
-   Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
-   options.num_threads = %(num_threads)s;
-   options.linear_solver_type = %(linear_solver)s;
-   options.sparse_linear_algebra_library_type = %(sparse_backend)s;
-   options.preconditioner_type = %(preconditioner)s;
+   BundleAdjustmentProblem bundle_adjustment_problem;
+   Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+   options->num_threads = %(num_threads)s;
+   options->linear_solver_type = %(linear_solver)s;
+   options->sparse_linear_algebra_library_type = %(sparse_backend)s;
+   options->preconditioner_type = %(preconditioner)s;
    if (%(ordering)s) {
-    options.linear_solver_ordering.reset();
+    options->linear_solver_ordering.reset();
    }
-  RunSolverForConfigAndExpectResidualsMatch(options);
+   Problem* problem = bundle_adjustment_problem.mutable_problem();
+   RunSolverForConfigAndExpectResidualsMatch(*options, problem);
 }
 
 }  // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_auto_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_auto_test.cc
index 2d3ea81..c6cbaa5 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_auto_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_auto_test.cc
@@ -42,15 +42,17 @@
 
 TEST_F(BundleAdjustmentTest,
        DenseSchur_AutomaticOrdering) {  // NOLINT
-   Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
-   options.num_threads = 1;
-   options.linear_solver_type = DENSE_SCHUR;
-   options.sparse_linear_algebra_library_type = NO_SPARSE;
-   options.preconditioner_type = IDENTITY;
+   BundleAdjustmentProblem bundle_adjustment_problem;
+   Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+   options->num_threads = 1;
+   options->linear_solver_type = DENSE_SCHUR;
+   options->sparse_linear_algebra_library_type = NO_SPARSE;
+   options->preconditioner_type = IDENTITY;
    if (kAutomaticOrdering) {
-    options.linear_solver_ordering.reset();
+    options->linear_solver_ordering.reset();
    }
-  RunSolverForConfigAndExpectResidualsMatch(options);
+   Problem* problem = bundle_adjustment_problem.mutable_problem();
+   RunSolverForConfigAndExpectResidualsMatch(*options, problem);
 }
 
 }  // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_auto_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_auto_threads_test.cc
index 311bceb..bbbcbb6 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_auto_threads_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_auto_threads_test.cc
@@ -44,15 +44,17 @@
 
 TEST_F(BundleAdjustmentTest,
        DenseSchur_AutomaticOrdering_Threads) {  // NOLINT
-   Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
-   options.num_threads = 4;
-   options.linear_solver_type = DENSE_SCHUR;
-   options.sparse_linear_algebra_library_type = NO_SPARSE;
-   options.preconditioner_type = IDENTITY;
+   BundleAdjustmentProblem bundle_adjustment_problem;
+   Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+   options->num_threads = 4;
+   options->linear_solver_type = DENSE_SCHUR;
+   options->sparse_linear_algebra_library_type = NO_SPARSE;
+   options->preconditioner_type = IDENTITY;
    if (kAutomaticOrdering) {
-    options.linear_solver_ordering.reset();
+    options->linear_solver_ordering.reset();
    }
-  RunSolverForConfigAndExpectResidualsMatch(options);
+   Problem* problem = bundle_adjustment_problem.mutable_problem();
+   RunSolverForConfigAndExpectResidualsMatch(*options, problem);
 }
 
 }  // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_user_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_user_test.cc
index 930f5f0..48cd4c8 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_user_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_user_test.cc
@@ -42,15 +42,17 @@
 
 TEST_F(BundleAdjustmentTest,
        DenseSchur_UserOrdering) {  // NOLINT
-   Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
-   options.num_threads = 1;
-   options.linear_solver_type = DENSE_SCHUR;
-   options.sparse_linear_algebra_library_type = NO_SPARSE;
-   options.preconditioner_type = IDENTITY;
+   BundleAdjustmentProblem bundle_adjustment_problem;
+   Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+   options->num_threads = 1;
+   options->linear_solver_type = DENSE_SCHUR;
+   options->sparse_linear_algebra_library_type = NO_SPARSE;
+   options->preconditioner_type = IDENTITY;
    if (kUserOrdering) {
-    options.linear_solver_ordering.reset();
+    options->linear_solver_ordering.reset();
    }
-  RunSolverForConfigAndExpectResidualsMatch(options);
+   Problem* problem = bundle_adjustment_problem.mutable_problem();
+   RunSolverForConfigAndExpectResidualsMatch(*options, problem);
 }
 
 }  // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_user_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_user_threads_test.cc
index cf8139a..ec070bf 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_user_threads_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_denseschur_user_threads_test.cc
@@ -44,15 +44,17 @@
 
 TEST_F(BundleAdjustmentTest,
        DenseSchur_UserOrdering_Threads) {  // NOLINT
-   Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
-   options.num_threads = 4;
-   options.linear_solver_type = DENSE_SCHUR;
-   options.sparse_linear_algebra_library_type = NO_SPARSE;
-   options.preconditioner_type = IDENTITY;
+   BundleAdjustmentProblem bundle_adjustment_problem;
+   Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+   options->num_threads = 4;
+   options->linear_solver_type = DENSE_SCHUR;
+   options->sparse_linear_algebra_library_type = NO_SPARSE;
+   options->preconditioner_type = IDENTITY;
    if (kUserOrdering) {
-    options.linear_solver_ordering.reset();
+    options->linear_solver_ordering.reset();
    }
-  RunSolverForConfigAndExpectResidualsMatch(options);
+   Problem* problem = bundle_adjustment_problem.mutable_problem();
+   RunSolverForConfigAndExpectResidualsMatch(*options, problem);
 }
 
 }  // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_auto_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_auto_test.cc
index 8c3b886..5f36b2e 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_auto_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_auto_test.cc
@@ -42,15 +42,17 @@
 
 TEST_F(BundleAdjustmentTest,
        IterativeSchur_Jacobi_AutomaticOrdering) {  // NOLINT
-   Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
-   options.num_threads = 1;
-   options.linear_solver_type = ITERATIVE_SCHUR;
-   options.sparse_linear_algebra_library_type = NO_SPARSE;
-   options.preconditioner_type = JACOBI;
+   BundleAdjustmentProblem bundle_adjustment_problem;
+   Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+   options->num_threads = 1;
+   options->linear_solver_type = ITERATIVE_SCHUR;
+   options->sparse_linear_algebra_library_type = NO_SPARSE;
+   options->preconditioner_type = JACOBI;
    if (kAutomaticOrdering) {
-    options.linear_solver_ordering.reset();
+    options->linear_solver_ordering.reset();
    }
-  RunSolverForConfigAndExpectResidualsMatch(options);
+   Problem* problem = bundle_adjustment_problem.mutable_problem();
+   RunSolverForConfigAndExpectResidualsMatch(*options, problem);
 }
 
 }  // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_auto_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_auto_threads_test.cc
index 4585201..8312db2 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_auto_threads_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_auto_threads_test.cc
@@ -44,15 +44,17 @@
 
 TEST_F(BundleAdjustmentTest,
        IterativeSchur_Jacobi_AutomaticOrdering_Threads) {  // NOLINT
-   Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
-   options.num_threads = 4;
-   options.linear_solver_type = ITERATIVE_SCHUR;
-   options.sparse_linear_algebra_library_type = NO_SPARSE;
-   options.preconditioner_type = JACOBI;
+   BundleAdjustmentProblem bundle_adjustment_problem;
+   Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+   options->num_threads = 4;
+   options->linear_solver_type = ITERATIVE_SCHUR;
+   options->sparse_linear_algebra_library_type = NO_SPARSE;
+   options->preconditioner_type = JACOBI;
    if (kAutomaticOrdering) {
-    options.linear_solver_ordering.reset();
+    options->linear_solver_ordering.reset();
    }
-  RunSolverForConfigAndExpectResidualsMatch(options);
+   Problem* problem = bundle_adjustment_problem.mutable_problem();
+   RunSolverForConfigAndExpectResidualsMatch(*options, problem);
 }
 
 }  // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_user_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_user_test.cc
index 9b864e4..82f394a 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_user_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_user_test.cc
@@ -42,15 +42,17 @@
 
 TEST_F(BundleAdjustmentTest,
        IterativeSchur_Jacobi_UserOrdering) {  // NOLINT
-   Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
-   options.num_threads = 1;
-   options.linear_solver_type = ITERATIVE_SCHUR;
-   options.sparse_linear_algebra_library_type = NO_SPARSE;
-   options.preconditioner_type = JACOBI;
+   BundleAdjustmentProblem bundle_adjustment_problem;
+   Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+   options->num_threads = 1;
+   options->linear_solver_type = ITERATIVE_SCHUR;
+   options->sparse_linear_algebra_library_type = NO_SPARSE;
+   options->preconditioner_type = JACOBI;
    if (kUserOrdering) {
-    options.linear_solver_ordering.reset();
+    options->linear_solver_ordering.reset();
    }
-  RunSolverForConfigAndExpectResidualsMatch(options);
+   Problem* problem = bundle_adjustment_problem.mutable_problem();
+   RunSolverForConfigAndExpectResidualsMatch(*options, problem);
 }
 
 }  // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_user_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_user_threads_test.cc
index 6266bea..78f5524 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_user_threads_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_jacobi_user_threads_test.cc
@@ -44,15 +44,17 @@
 
 TEST_F(BundleAdjustmentTest,
        IterativeSchur_Jacobi_UserOrdering_Threads) {  // NOLINT
-   Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
-   options.num_threads = 4;
-   options.linear_solver_type = ITERATIVE_SCHUR;
-   options.sparse_linear_algebra_library_type = NO_SPARSE;
-   options.preconditioner_type = JACOBI;
+   BundleAdjustmentProblem bundle_adjustment_problem;
+   Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+   options->num_threads = 4;
+   options->linear_solver_type = ITERATIVE_SCHUR;
+   options->sparse_linear_algebra_library_type = NO_SPARSE;
+   options->preconditioner_type = JACOBI;
    if (kUserOrdering) {
-    options.linear_solver_ordering.reset();
+    options->linear_solver_ordering.reset();
    }
-  RunSolverForConfigAndExpectResidualsMatch(options);
+   Problem* problem = bundle_adjustment_problem.mutable_problem();
+   RunSolverForConfigAndExpectResidualsMatch(*options, problem);
 }
 
 }  // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_auto_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_auto_test.cc
index bc40f5d..5407f3c 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_auto_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_auto_test.cc
@@ -42,15 +42,17 @@
 
 TEST_F(BundleAdjustmentTest,
        IterativeSchur_SchurJacobi_AutomaticOrdering) {  // NOLINT
-   Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
-   options.num_threads = 1;
-   options.linear_solver_type = ITERATIVE_SCHUR;
-   options.sparse_linear_algebra_library_type = NO_SPARSE;
-   options.preconditioner_type = SCHUR_JACOBI;
+   BundleAdjustmentProblem bundle_adjustment_problem;
+   Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+   options->num_threads = 1;
+   options->linear_solver_type = ITERATIVE_SCHUR;
+   options->sparse_linear_algebra_library_type = NO_SPARSE;
+   options->preconditioner_type = SCHUR_JACOBI;
    if (kAutomaticOrdering) {
-    options.linear_solver_ordering.reset();
+    options->linear_solver_ordering.reset();
    }
-  RunSolverForConfigAndExpectResidualsMatch(options);
+   Problem* problem = bundle_adjustment_problem.mutable_problem();
+   RunSolverForConfigAndExpectResidualsMatch(*options, problem);
 }
 
 }  // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_auto_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_auto_threads_test.cc
index c55fa62..ed04d8f 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_auto_threads_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_auto_threads_test.cc
@@ -44,15 +44,17 @@
 
 TEST_F(BundleAdjustmentTest,
        IterativeSchur_SchurJacobi_AutomaticOrdering_Threads) {  // NOLINT
-   Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
-   options.num_threads = 4;
-   options.linear_solver_type = ITERATIVE_SCHUR;
-   options.sparse_linear_algebra_library_type = NO_SPARSE;
-   options.preconditioner_type = SCHUR_JACOBI;
+   BundleAdjustmentProblem bundle_adjustment_problem;
+   Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+   options->num_threads = 4;
+   options->linear_solver_type = ITERATIVE_SCHUR;
+   options->sparse_linear_algebra_library_type = NO_SPARSE;
+   options->preconditioner_type = SCHUR_JACOBI;
    if (kAutomaticOrdering) {
-    options.linear_solver_ordering.reset();
+    options->linear_solver_ordering.reset();
    }
-  RunSolverForConfigAndExpectResidualsMatch(options);
+   Problem* problem = bundle_adjustment_problem.mutable_problem();
+   RunSolverForConfigAndExpectResidualsMatch(*options, problem);
 }
 
 }  // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_user_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_user_test.cc
index cc7f334..4299738 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_user_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_user_test.cc
@@ -42,15 +42,17 @@
 
 TEST_F(BundleAdjustmentTest,
        IterativeSchur_SchurJacobi_UserOrdering) {  // NOLINT
-   Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
-   options.num_threads = 1;
-   options.linear_solver_type = ITERATIVE_SCHUR;
-   options.sparse_linear_algebra_library_type = NO_SPARSE;
-   options.preconditioner_type = SCHUR_JACOBI;
+   BundleAdjustmentProblem bundle_adjustment_problem;
+   Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+   options->num_threads = 1;
+   options->linear_solver_type = ITERATIVE_SCHUR;
+   options->sparse_linear_algebra_library_type = NO_SPARSE;
+   options->preconditioner_type = SCHUR_JACOBI;
    if (kUserOrdering) {
-    options.linear_solver_ordering.reset();
+    options->linear_solver_ordering.reset();
    }
-  RunSolverForConfigAndExpectResidualsMatch(options);
+   Problem* problem = bundle_adjustment_problem.mutable_problem();
+   RunSolverForConfigAndExpectResidualsMatch(*options, problem);
 }
 
 }  // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_user_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_user_threads_test.cc
index b8cd166..46a320a 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_user_threads_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_schurjacobi_user_threads_test.cc
@@ -44,15 +44,17 @@
 
 TEST_F(BundleAdjustmentTest,
        IterativeSchur_SchurJacobi_UserOrdering_Threads) {  // NOLINT
-   Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
-   options.num_threads = 4;
-   options.linear_solver_type = ITERATIVE_SCHUR;
-   options.sparse_linear_algebra_library_type = NO_SPARSE;
-   options.preconditioner_type = SCHUR_JACOBI;
+   BundleAdjustmentProblem bundle_adjustment_problem;
+   Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+   options->num_threads = 4;
+   options->linear_solver_type = ITERATIVE_SCHUR;
+   options->sparse_linear_algebra_library_type = NO_SPARSE;
+   options->preconditioner_type = SCHUR_JACOBI;
    if (kUserOrdering) {
-    options.linear_solver_ordering.reset();
+    options->linear_solver_ordering.reset();
    }
-  RunSolverForConfigAndExpectResidualsMatch(options);
+   Problem* problem = bundle_adjustment_problem.mutable_problem();
+   RunSolverForConfigAndExpectResidualsMatch(*options, problem);
 }
 
 }  // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_auto_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_auto_test.cc
index cdb4fd0..b87d386 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_auto_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_auto_test.cc
@@ -44,15 +44,17 @@
 
 TEST_F(BundleAdjustmentTest,
        IterativeSchur_SuiteSparse_ClusterJacobi_AutomaticOrdering) {  // NOLINT
-   Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
-   options.num_threads = 1;
-   options.linear_solver_type = ITERATIVE_SCHUR;
-   options.sparse_linear_algebra_library_type = SUITE_SPARSE;
-   options.preconditioner_type = CLUSTER_JACOBI;
+   BundleAdjustmentProblem bundle_adjustment_problem;
+   Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+   options->num_threads = 1;
+   options->linear_solver_type = ITERATIVE_SCHUR;
+   options->sparse_linear_algebra_library_type = SUITE_SPARSE;
+   options->preconditioner_type = CLUSTER_JACOBI;
    if (kAutomaticOrdering) {
-    options.linear_solver_ordering.reset();
+    options->linear_solver_ordering.reset();
    }
-  RunSolverForConfigAndExpectResidualsMatch(options);
+   Problem* problem = bundle_adjustment_problem.mutable_problem();
+   RunSolverForConfigAndExpectResidualsMatch(*options, problem);
 }
 
 }  // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_auto_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_auto_threads_test.cc
index 15ed6b1..414a3e9 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_auto_threads_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_auto_threads_test.cc
@@ -45,15 +45,17 @@
 
 TEST_F(BundleAdjustmentTest,
        IterativeSchur_SuiteSparse_ClusterJacobi_AutomaticOrdering_Threads) {  // NOLINT
-   Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
-   options.num_threads = 4;
-   options.linear_solver_type = ITERATIVE_SCHUR;
-   options.sparse_linear_algebra_library_type = SUITE_SPARSE;
-   options.preconditioner_type = CLUSTER_JACOBI;
+   BundleAdjustmentProblem bundle_adjustment_problem;
+   Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+   options->num_threads = 4;
+   options->linear_solver_type = ITERATIVE_SCHUR;
+   options->sparse_linear_algebra_library_type = SUITE_SPARSE;
+   options->preconditioner_type = CLUSTER_JACOBI;
    if (kAutomaticOrdering) {
-    options.linear_solver_ordering.reset();
+    options->linear_solver_ordering.reset();
    }
-  RunSolverForConfigAndExpectResidualsMatch(options);
+   Problem* problem = bundle_adjustment_problem.mutable_problem();
+   RunSolverForConfigAndExpectResidualsMatch(*options, problem);
 }
 
 }  // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_user_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_user_test.cc
index dda9d62..b0da4af 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_user_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_user_test.cc
@@ -44,15 +44,17 @@
 
 TEST_F(BundleAdjustmentTest,
        IterativeSchur_SuiteSparse_ClusterJacobi_UserOrdering) {  // NOLINT
-   Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
-   options.num_threads = 1;
-   options.linear_solver_type = ITERATIVE_SCHUR;
-   options.sparse_linear_algebra_library_type = SUITE_SPARSE;
-   options.preconditioner_type = CLUSTER_JACOBI;
+   BundleAdjustmentProblem bundle_adjustment_problem;
+   Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+   options->num_threads = 1;
+   options->linear_solver_type = ITERATIVE_SCHUR;
+   options->sparse_linear_algebra_library_type = SUITE_SPARSE;
+   options->preconditioner_type = CLUSTER_JACOBI;
    if (kUserOrdering) {
-    options.linear_solver_ordering.reset();
+    options->linear_solver_ordering.reset();
    }
-  RunSolverForConfigAndExpectResidualsMatch(options);
+   Problem* problem = bundle_adjustment_problem.mutable_problem();
+   RunSolverForConfigAndExpectResidualsMatch(*options, problem);
 }
 
 }  // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_user_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_user_threads_test.cc
index 6ca9f7b..0078911 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_user_threads_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clustjacobi_user_threads_test.cc
@@ -45,15 +45,17 @@
 
 TEST_F(BundleAdjustmentTest,
        IterativeSchur_SuiteSparse_ClusterJacobi_UserOrdering_Threads) {  // NOLINT
-   Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
-   options.num_threads = 4;
-   options.linear_solver_type = ITERATIVE_SCHUR;
-   options.sparse_linear_algebra_library_type = SUITE_SPARSE;
-   options.preconditioner_type = CLUSTER_JACOBI;
+   BundleAdjustmentProblem bundle_adjustment_problem;
+   Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+   options->num_threads = 4;
+   options->linear_solver_type = ITERATIVE_SCHUR;
+   options->sparse_linear_algebra_library_type = SUITE_SPARSE;
+   options->preconditioner_type = CLUSTER_JACOBI;
    if (kUserOrdering) {
-    options.linear_solver_ordering.reset();
+    options->linear_solver_ordering.reset();
    }
-  RunSolverForConfigAndExpectResidualsMatch(options);
+   Problem* problem = bundle_adjustment_problem.mutable_problem();
+   RunSolverForConfigAndExpectResidualsMatch(*options, problem);
 }
 
 }  // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_auto_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_auto_test.cc
index 6a40ef8..dc35fc8 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_auto_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_auto_test.cc
@@ -44,15 +44,17 @@
 
 TEST_F(BundleAdjustmentTest,
        IterativeSchur_SuiteSparse_ClusterTridiagonal_AutomaticOrdering) {  // NOLINT
-   Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
-   options.num_threads = 1;
-   options.linear_solver_type = ITERATIVE_SCHUR;
-   options.sparse_linear_algebra_library_type = SUITE_SPARSE;
-   options.preconditioner_type = CLUSTER_TRIDIAGONAL;
+   BundleAdjustmentProblem bundle_adjustment_problem;
+   Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+   options->num_threads = 1;
+   options->linear_solver_type = ITERATIVE_SCHUR;
+   options->sparse_linear_algebra_library_type = SUITE_SPARSE;
+   options->preconditioner_type = CLUSTER_TRIDIAGONAL;
    if (kAutomaticOrdering) {
-    options.linear_solver_ordering.reset();
+    options->linear_solver_ordering.reset();
    }
-  RunSolverForConfigAndExpectResidualsMatch(options);
+   Problem* problem = bundle_adjustment_problem.mutable_problem();
+   RunSolverForConfigAndExpectResidualsMatch(*options, problem);
 }
 
 }  // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_auto_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_auto_threads_test.cc
index 6bd66bc..b8b8613 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_auto_threads_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_auto_threads_test.cc
@@ -45,15 +45,17 @@
 
 TEST_F(BundleAdjustmentTest,
        IterativeSchur_SuiteSparse_ClusterTridiagonal_AutomaticOrdering_Threads) {  // NOLINT
-   Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
-   options.num_threads = 4;
-   options.linear_solver_type = ITERATIVE_SCHUR;
-   options.sparse_linear_algebra_library_type = SUITE_SPARSE;
-   options.preconditioner_type = CLUSTER_TRIDIAGONAL;
+   BundleAdjustmentProblem bundle_adjustment_problem;
+   Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+   options->num_threads = 4;
+   options->linear_solver_type = ITERATIVE_SCHUR;
+   options->sparse_linear_algebra_library_type = SUITE_SPARSE;
+   options->preconditioner_type = CLUSTER_TRIDIAGONAL;
    if (kAutomaticOrdering) {
-    options.linear_solver_ordering.reset();
+    options->linear_solver_ordering.reset();
    }
-  RunSolverForConfigAndExpectResidualsMatch(options);
+   Problem* problem = bundle_adjustment_problem.mutable_problem();
+   RunSolverForConfigAndExpectResidualsMatch(*options, problem);
 }
 
 }  // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_user_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_user_test.cc
index ae12ce9..bdea636 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_user_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_user_test.cc
@@ -44,15 +44,17 @@
 
 TEST_F(BundleAdjustmentTest,
        IterativeSchur_SuiteSparse_ClusterTridiagonal_UserOrdering) {  // NOLINT
-   Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
-   options.num_threads = 1;
-   options.linear_solver_type = ITERATIVE_SCHUR;
-   options.sparse_linear_algebra_library_type = SUITE_SPARSE;
-   options.preconditioner_type = CLUSTER_TRIDIAGONAL;
+   BundleAdjustmentProblem bundle_adjustment_problem;
+   Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+   options->num_threads = 1;
+   options->linear_solver_type = ITERATIVE_SCHUR;
+   options->sparse_linear_algebra_library_type = SUITE_SPARSE;
+   options->preconditioner_type = CLUSTER_TRIDIAGONAL;
    if (kUserOrdering) {
-    options.linear_solver_ordering.reset();
+    options->linear_solver_ordering.reset();
    }
-  RunSolverForConfigAndExpectResidualsMatch(options);
+   Problem* problem = bundle_adjustment_problem.mutable_problem();
+   RunSolverForConfigAndExpectResidualsMatch(*options, problem);
 }
 
 }  // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_user_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_user_threads_test.cc
index 727d908..e8b844a 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_user_threads_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_iterschur_suitesparse_clusttri_user_threads_test.cc
@@ -45,15 +45,17 @@
 
 TEST_F(BundleAdjustmentTest,
        IterativeSchur_SuiteSparse_ClusterTridiagonal_UserOrdering_Threads) {  // NOLINT
-   Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
-   options.num_threads = 4;
-   options.linear_solver_type = ITERATIVE_SCHUR;
-   options.sparse_linear_algebra_library_type = SUITE_SPARSE;
-   options.preconditioner_type = CLUSTER_TRIDIAGONAL;
+   BundleAdjustmentProblem bundle_adjustment_problem;
+   Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+   options->num_threads = 4;
+   options->linear_solver_type = ITERATIVE_SCHUR;
+   options->sparse_linear_algebra_library_type = SUITE_SPARSE;
+   options->preconditioner_type = CLUSTER_TRIDIAGONAL;
    if (kUserOrdering) {
-    options.linear_solver_ordering.reset();
+    options->linear_solver_ordering.reset();
    }
-  RunSolverForConfigAndExpectResidualsMatch(options);
+   Problem* problem = bundle_adjustment_problem.mutable_problem();
+   RunSolverForConfigAndExpectResidualsMatch(*options, problem);
 }
 
 }  // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_auto_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_auto_test.cc
index 3d3b642..00c0757 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_auto_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_auto_test.cc
@@ -44,15 +44,17 @@
 
 TEST_F(BundleAdjustmentTest,
        SparseNormalCholesky_CxSparse_AutomaticOrdering) {  // NOLINT
-   Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
-   options.num_threads = 1;
-   options.linear_solver_type = SPARSE_NORMAL_CHOLESKY;
-   options.sparse_linear_algebra_library_type = CX_SPARSE;
-   options.preconditioner_type = IDENTITY;
+   BundleAdjustmentProblem bundle_adjustment_problem;
+   Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+   options->num_threads = 1;
+   options->linear_solver_type = SPARSE_NORMAL_CHOLESKY;
+   options->sparse_linear_algebra_library_type = CX_SPARSE;
+   options->preconditioner_type = IDENTITY;
    if (kAutomaticOrdering) {
-    options.linear_solver_ordering.reset();
+    options->linear_solver_ordering.reset();
    }
-  RunSolverForConfigAndExpectResidualsMatch(options);
+   Problem* problem = bundle_adjustment_problem.mutable_problem();
+   RunSolverForConfigAndExpectResidualsMatch(*options, problem);
 }
 
 }  // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_auto_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_auto_threads_test.cc
index ae7f543..52a86c3 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_auto_threads_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_auto_threads_test.cc
@@ -45,15 +45,17 @@
 
 TEST_F(BundleAdjustmentTest,
        SparseNormalCholesky_CxSparse_AutomaticOrdering_Threads) {  // NOLINT
-   Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
-   options.num_threads = 4;
-   options.linear_solver_type = SPARSE_NORMAL_CHOLESKY;
-   options.sparse_linear_algebra_library_type = CX_SPARSE;
-   options.preconditioner_type = IDENTITY;
+   BundleAdjustmentProblem bundle_adjustment_problem;
+   Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+   options->num_threads = 4;
+   options->linear_solver_type = SPARSE_NORMAL_CHOLESKY;
+   options->sparse_linear_algebra_library_type = CX_SPARSE;
+   options->preconditioner_type = IDENTITY;
    if (kAutomaticOrdering) {
-    options.linear_solver_ordering.reset();
+    options->linear_solver_ordering.reset();
    }
-  RunSolverForConfigAndExpectResidualsMatch(options);
+   Problem* problem = bundle_adjustment_problem.mutable_problem();
+   RunSolverForConfigAndExpectResidualsMatch(*options, problem);
 }
 
 }  // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_user_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_user_test.cc
index 9f3d752..9a4cdb5 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_user_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_user_test.cc
@@ -44,15 +44,17 @@
 
 TEST_F(BundleAdjustmentTest,
        SparseNormalCholesky_CxSparse_UserOrdering) {  // NOLINT
-   Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
-   options.num_threads = 1;
-   options.linear_solver_type = SPARSE_NORMAL_CHOLESKY;
-   options.sparse_linear_algebra_library_type = CX_SPARSE;
-   options.preconditioner_type = IDENTITY;
+   BundleAdjustmentProblem bundle_adjustment_problem;
+   Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+   options->num_threads = 1;
+   options->linear_solver_type = SPARSE_NORMAL_CHOLESKY;
+   options->sparse_linear_algebra_library_type = CX_SPARSE;
+   options->preconditioner_type = IDENTITY;
    if (kUserOrdering) {
-    options.linear_solver_ordering.reset();
+    options->linear_solver_ordering.reset();
    }
-  RunSolverForConfigAndExpectResidualsMatch(options);
+   Problem* problem = bundle_adjustment_problem.mutable_problem();
+   RunSolverForConfigAndExpectResidualsMatch(*options, problem);
 }
 
 }  // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_user_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_user_threads_test.cc
index 366169c..960630a 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_user_threads_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_cxsparse_user_threads_test.cc
@@ -45,15 +45,17 @@
 
 TEST_F(BundleAdjustmentTest,
        SparseNormalCholesky_CxSparse_UserOrdering_Threads) {  // NOLINT
-   Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
-   options.num_threads = 4;
-   options.linear_solver_type = SPARSE_NORMAL_CHOLESKY;
-   options.sparse_linear_algebra_library_type = CX_SPARSE;
-   options.preconditioner_type = IDENTITY;
+   BundleAdjustmentProblem bundle_adjustment_problem;
+   Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+   options->num_threads = 4;
+   options->linear_solver_type = SPARSE_NORMAL_CHOLESKY;
+   options->sparse_linear_algebra_library_type = CX_SPARSE;
+   options->preconditioner_type = IDENTITY;
    if (kUserOrdering) {
-    options.linear_solver_ordering.reset();
+    options->linear_solver_ordering.reset();
    }
-  RunSolverForConfigAndExpectResidualsMatch(options);
+   Problem* problem = bundle_adjustment_problem.mutable_problem();
+   RunSolverForConfigAndExpectResidualsMatch(*options, problem);
 }
 
 }  // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_auto_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_auto_test.cc
index 700bb50..c4575df 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_auto_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_auto_test.cc
@@ -44,15 +44,17 @@
 
 TEST_F(BundleAdjustmentTest,
        SparseNormalCholesky_EigenSparse_AutomaticOrdering) {  // NOLINT
-   Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
-   options.num_threads = 1;
-   options.linear_solver_type = SPARSE_NORMAL_CHOLESKY;
-   options.sparse_linear_algebra_library_type = EIGEN_SPARSE;
-   options.preconditioner_type = IDENTITY;
+   BundleAdjustmentProblem bundle_adjustment_problem;
+   Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+   options->num_threads = 1;
+   options->linear_solver_type = SPARSE_NORMAL_CHOLESKY;
+   options->sparse_linear_algebra_library_type = EIGEN_SPARSE;
+   options->preconditioner_type = IDENTITY;
    if (kAutomaticOrdering) {
-    options.linear_solver_ordering.reset();
+    options->linear_solver_ordering.reset();
    }
-  RunSolverForConfigAndExpectResidualsMatch(options);
+   Problem* problem = bundle_adjustment_problem.mutable_problem();
+   RunSolverForConfigAndExpectResidualsMatch(*options, problem);
 }
 
 }  // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_auto_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_auto_threads_test.cc
index e363297..1cda776 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_auto_threads_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_auto_threads_test.cc
@@ -45,15 +45,17 @@
 
 TEST_F(BundleAdjustmentTest,
        SparseNormalCholesky_EigenSparse_AutomaticOrdering_Threads) {  // NOLINT
-   Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
-   options.num_threads = 4;
-   options.linear_solver_type = SPARSE_NORMAL_CHOLESKY;
-   options.sparse_linear_algebra_library_type = EIGEN_SPARSE;
-   options.preconditioner_type = IDENTITY;
+   BundleAdjustmentProblem bundle_adjustment_problem;
+   Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+   options->num_threads = 4;
+   options->linear_solver_type = SPARSE_NORMAL_CHOLESKY;
+   options->sparse_linear_algebra_library_type = EIGEN_SPARSE;
+   options->preconditioner_type = IDENTITY;
    if (kAutomaticOrdering) {
-    options.linear_solver_ordering.reset();
+    options->linear_solver_ordering.reset();
    }
-  RunSolverForConfigAndExpectResidualsMatch(options);
+   Problem* problem = bundle_adjustment_problem.mutable_problem();
+   RunSolverForConfigAndExpectResidualsMatch(*options, problem);
 }
 
 }  // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_user_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_user_test.cc
index dd423f3..e9e42af 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_user_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_user_test.cc
@@ -44,15 +44,17 @@
 
 TEST_F(BundleAdjustmentTest,
        SparseNormalCholesky_EigenSparse_UserOrdering) {  // NOLINT
-   Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
-   options.num_threads = 1;
-   options.linear_solver_type = SPARSE_NORMAL_CHOLESKY;
-   options.sparse_linear_algebra_library_type = EIGEN_SPARSE;
-   options.preconditioner_type = IDENTITY;
+   BundleAdjustmentProblem bundle_adjustment_problem;
+   Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+   options->num_threads = 1;
+   options->linear_solver_type = SPARSE_NORMAL_CHOLESKY;
+   options->sparse_linear_algebra_library_type = EIGEN_SPARSE;
+   options->preconditioner_type = IDENTITY;
    if (kUserOrdering) {
-    options.linear_solver_ordering.reset();
+    options->linear_solver_ordering.reset();
    }
-  RunSolverForConfigAndExpectResidualsMatch(options);
+   Problem* problem = bundle_adjustment_problem.mutable_problem();
+   RunSolverForConfigAndExpectResidualsMatch(*options, problem);
 }
 
 }  // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_user_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_user_threads_test.cc
index 27dc821..a3aa368 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_user_threads_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_eigensparse_user_threads_test.cc
@@ -45,15 +45,17 @@
 
 TEST_F(BundleAdjustmentTest,
        SparseNormalCholesky_EigenSparse_UserOrdering_Threads) {  // NOLINT
-   Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
-   options.num_threads = 4;
-   options.linear_solver_type = SPARSE_NORMAL_CHOLESKY;
-   options.sparse_linear_algebra_library_type = EIGEN_SPARSE;
-   options.preconditioner_type = IDENTITY;
+   BundleAdjustmentProblem bundle_adjustment_problem;
+   Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+   options->num_threads = 4;
+   options->linear_solver_type = SPARSE_NORMAL_CHOLESKY;
+   options->sparse_linear_algebra_library_type = EIGEN_SPARSE;
+   options->preconditioner_type = IDENTITY;
    if (kUserOrdering) {
-    options.linear_solver_ordering.reset();
+    options->linear_solver_ordering.reset();
    }
-  RunSolverForConfigAndExpectResidualsMatch(options);
+   Problem* problem = bundle_adjustment_problem.mutable_problem();
+   RunSolverForConfigAndExpectResidualsMatch(*options, problem);
 }
 
 }  // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_auto_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_auto_test.cc
index 7155bd9..f699981 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_auto_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_auto_test.cc
@@ -44,15 +44,17 @@
 
 TEST_F(BundleAdjustmentTest,
        SparseNormalCholesky_SuiteSparse_AutomaticOrdering) {  // NOLINT
-   Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
-   options.num_threads = 1;
-   options.linear_solver_type = SPARSE_NORMAL_CHOLESKY;
-   options.sparse_linear_algebra_library_type = SUITE_SPARSE;
-   options.preconditioner_type = IDENTITY;
+   BundleAdjustmentProblem bundle_adjustment_problem;
+   Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+   options->num_threads = 1;
+   options->linear_solver_type = SPARSE_NORMAL_CHOLESKY;
+   options->sparse_linear_algebra_library_type = SUITE_SPARSE;
+   options->preconditioner_type = IDENTITY;
    if (kAutomaticOrdering) {
-    options.linear_solver_ordering.reset();
+    options->linear_solver_ordering.reset();
    }
-  RunSolverForConfigAndExpectResidualsMatch(options);
+   Problem* problem = bundle_adjustment_problem.mutable_problem();
+   RunSolverForConfigAndExpectResidualsMatch(*options, problem);
 }
 
 }  // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_auto_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_auto_threads_test.cc
index 8991cca..7253075 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_auto_threads_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_auto_threads_test.cc
@@ -45,15 +45,17 @@
 
 TEST_F(BundleAdjustmentTest,
        SparseNormalCholesky_SuiteSparse_AutomaticOrdering_Threads) {  // NOLINT
-   Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
-   options.num_threads = 4;
-   options.linear_solver_type = SPARSE_NORMAL_CHOLESKY;
-   options.sparse_linear_algebra_library_type = SUITE_SPARSE;
-   options.preconditioner_type = IDENTITY;
+   BundleAdjustmentProblem bundle_adjustment_problem;
+   Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+   options->num_threads = 4;
+   options->linear_solver_type = SPARSE_NORMAL_CHOLESKY;
+   options->sparse_linear_algebra_library_type = SUITE_SPARSE;
+   options->preconditioner_type = IDENTITY;
    if (kAutomaticOrdering) {
-    options.linear_solver_ordering.reset();
+    options->linear_solver_ordering.reset();
    }
-  RunSolverForConfigAndExpectResidualsMatch(options);
+   Problem* problem = bundle_adjustment_problem.mutable_problem();
+   RunSolverForConfigAndExpectResidualsMatch(*options, problem);
 }
 
 }  // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_user_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_user_test.cc
index e4375c1..dae0ed6 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_user_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_user_test.cc
@@ -44,15 +44,17 @@
 
 TEST_F(BundleAdjustmentTest,
        SparseNormalCholesky_SuiteSparse_UserOrdering) {  // NOLINT
-   Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
-   options.num_threads = 1;
-   options.linear_solver_type = SPARSE_NORMAL_CHOLESKY;
-   options.sparse_linear_algebra_library_type = SUITE_SPARSE;
-   options.preconditioner_type = IDENTITY;
+   BundleAdjustmentProblem bundle_adjustment_problem;
+   Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+   options->num_threads = 1;
+   options->linear_solver_type = SPARSE_NORMAL_CHOLESKY;
+   options->sparse_linear_algebra_library_type = SUITE_SPARSE;
+   options->preconditioner_type = IDENTITY;
    if (kUserOrdering) {
-    options.linear_solver_ordering.reset();
+    options->linear_solver_ordering.reset();
    }
-  RunSolverForConfigAndExpectResidualsMatch(options);
+   Problem* problem = bundle_adjustment_problem.mutable_problem();
+   RunSolverForConfigAndExpectResidualsMatch(*options, problem);
 }
 
 }  // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_user_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_user_threads_test.cc
index 3c91c72..82bec88 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_user_threads_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparsecholesky_suitesparse_user_threads_test.cc
@@ -45,15 +45,17 @@
 
 TEST_F(BundleAdjustmentTest,
        SparseNormalCholesky_SuiteSparse_UserOrdering_Threads) {  // NOLINT
-   Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
-   options.num_threads = 4;
-   options.linear_solver_type = SPARSE_NORMAL_CHOLESKY;
-   options.sparse_linear_algebra_library_type = SUITE_SPARSE;
-   options.preconditioner_type = IDENTITY;
+   BundleAdjustmentProblem bundle_adjustment_problem;
+   Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+   options->num_threads = 4;
+   options->linear_solver_type = SPARSE_NORMAL_CHOLESKY;
+   options->sparse_linear_algebra_library_type = SUITE_SPARSE;
+   options->preconditioner_type = IDENTITY;
    if (kUserOrdering) {
-    options.linear_solver_ordering.reset();
+    options->linear_solver_ordering.reset();
    }
-  RunSolverForConfigAndExpectResidualsMatch(options);
+   Problem* problem = bundle_adjustment_problem.mutable_problem();
+   RunSolverForConfigAndExpectResidualsMatch(*options, problem);
 }
 
 }  // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_auto_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_auto_test.cc
index d9b10e4..a623cb9 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_auto_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_auto_test.cc
@@ -44,15 +44,17 @@
 
 TEST_F(BundleAdjustmentTest,
        SparseSchur_CxSparse_AutomaticOrdering) {  // NOLINT
-   Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
-   options.num_threads = 1;
-   options.linear_solver_type = SPARSE_SCHUR;
-   options.sparse_linear_algebra_library_type = CX_SPARSE;
-   options.preconditioner_type = IDENTITY;
+   BundleAdjustmentProblem bundle_adjustment_problem;
+   Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+   options->num_threads = 1;
+   options->linear_solver_type = SPARSE_SCHUR;
+   options->sparse_linear_algebra_library_type = CX_SPARSE;
+   options->preconditioner_type = IDENTITY;
    if (kAutomaticOrdering) {
-    options.linear_solver_ordering.reset();
+    options->linear_solver_ordering.reset();
    }
-  RunSolverForConfigAndExpectResidualsMatch(options);
+   Problem* problem = bundle_adjustment_problem.mutable_problem();
+   RunSolverForConfigAndExpectResidualsMatch(*options, problem);
 }
 
 }  // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_auto_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_auto_threads_test.cc
index f7dbc45..8d13c66 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_auto_threads_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_auto_threads_test.cc
@@ -45,15 +45,17 @@
 
 TEST_F(BundleAdjustmentTest,
        SparseSchur_CxSparse_AutomaticOrdering_Threads) {  // NOLINT
-   Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
-   options.num_threads = 4;
-   options.linear_solver_type = SPARSE_SCHUR;
-   options.sparse_linear_algebra_library_type = CX_SPARSE;
-   options.preconditioner_type = IDENTITY;
+   BundleAdjustmentProblem bundle_adjustment_problem;
+   Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+   options->num_threads = 4;
+   options->linear_solver_type = SPARSE_SCHUR;
+   options->sparse_linear_algebra_library_type = CX_SPARSE;
+   options->preconditioner_type = IDENTITY;
    if (kAutomaticOrdering) {
-    options.linear_solver_ordering.reset();
+    options->linear_solver_ordering.reset();
    }
-  RunSolverForConfigAndExpectResidualsMatch(options);
+   Problem* problem = bundle_adjustment_problem.mutable_problem();
+   RunSolverForConfigAndExpectResidualsMatch(*options, problem);
 }
 
 }  // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_user_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_user_test.cc
index 27a673d..73b0787 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_user_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_user_test.cc
@@ -44,15 +44,17 @@
 
 TEST_F(BundleAdjustmentTest,
        SparseSchur_CxSparse_UserOrdering) {  // NOLINT
-   Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
-   options.num_threads = 1;
-   options.linear_solver_type = SPARSE_SCHUR;
-   options.sparse_linear_algebra_library_type = CX_SPARSE;
-   options.preconditioner_type = IDENTITY;
+   BundleAdjustmentProblem bundle_adjustment_problem;
+   Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+   options->num_threads = 1;
+   options->linear_solver_type = SPARSE_SCHUR;
+   options->sparse_linear_algebra_library_type = CX_SPARSE;
+   options->preconditioner_type = IDENTITY;
    if (kUserOrdering) {
-    options.linear_solver_ordering.reset();
+    options->linear_solver_ordering.reset();
    }
-  RunSolverForConfigAndExpectResidualsMatch(options);
+   Problem* problem = bundle_adjustment_problem.mutable_problem();
+   RunSolverForConfigAndExpectResidualsMatch(*options, problem);
 }
 
 }  // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_user_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_user_threads_test.cc
index 9e5db38..9318a27 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_user_threads_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_cxsparse_user_threads_test.cc
@@ -45,15 +45,17 @@
 
 TEST_F(BundleAdjustmentTest,
        SparseSchur_CxSparse_UserOrdering_Threads) {  // NOLINT
-   Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
-   options.num_threads = 4;
-   options.linear_solver_type = SPARSE_SCHUR;
-   options.sparse_linear_algebra_library_type = CX_SPARSE;
-   options.preconditioner_type = IDENTITY;
+   BundleAdjustmentProblem bundle_adjustment_problem;
+   Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+   options->num_threads = 4;
+   options->linear_solver_type = SPARSE_SCHUR;
+   options->sparse_linear_algebra_library_type = CX_SPARSE;
+   options->preconditioner_type = IDENTITY;
    if (kUserOrdering) {
-    options.linear_solver_ordering.reset();
+    options->linear_solver_ordering.reset();
    }
-  RunSolverForConfigAndExpectResidualsMatch(options);
+   Problem* problem = bundle_adjustment_problem.mutable_problem();
+   RunSolverForConfigAndExpectResidualsMatch(*options, problem);
 }
 
 }  // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_auto_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_auto_test.cc
index bc8d66b..eb31fed 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_auto_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_auto_test.cc
@@ -44,15 +44,17 @@
 
 TEST_F(BundleAdjustmentTest,
        SparseSchur_EigenSparse_AutomaticOrdering) {  // NOLINT
-   Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
-   options.num_threads = 1;
-   options.linear_solver_type = SPARSE_SCHUR;
-   options.sparse_linear_algebra_library_type = EIGEN_SPARSE;
-   options.preconditioner_type = IDENTITY;
+   BundleAdjustmentProblem bundle_adjustment_problem;
+   Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+   options->num_threads = 1;
+   options->linear_solver_type = SPARSE_SCHUR;
+   options->sparse_linear_algebra_library_type = EIGEN_SPARSE;
+   options->preconditioner_type = IDENTITY;
    if (kAutomaticOrdering) {
-    options.linear_solver_ordering.reset();
+    options->linear_solver_ordering.reset();
    }
-  RunSolverForConfigAndExpectResidualsMatch(options);
+   Problem* problem = bundle_adjustment_problem.mutable_problem();
+   RunSolverForConfigAndExpectResidualsMatch(*options, problem);
 }
 
 }  // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_auto_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_auto_threads_test.cc
index 6910d87..d9c9b0b 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_auto_threads_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_auto_threads_test.cc
@@ -45,15 +45,17 @@
 
 TEST_F(BundleAdjustmentTest,
        SparseSchur_EigenSparse_AutomaticOrdering_Threads) {  // NOLINT
-   Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
-   options.num_threads = 4;
-   options.linear_solver_type = SPARSE_SCHUR;
-   options.sparse_linear_algebra_library_type = EIGEN_SPARSE;
-   options.preconditioner_type = IDENTITY;
+   BundleAdjustmentProblem bundle_adjustment_problem;
+   Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+   options->num_threads = 4;
+   options->linear_solver_type = SPARSE_SCHUR;
+   options->sparse_linear_algebra_library_type = EIGEN_SPARSE;
+   options->preconditioner_type = IDENTITY;
    if (kAutomaticOrdering) {
-    options.linear_solver_ordering.reset();
+    options->linear_solver_ordering.reset();
    }
-  RunSolverForConfigAndExpectResidualsMatch(options);
+   Problem* problem = bundle_adjustment_problem.mutable_problem();
+   RunSolverForConfigAndExpectResidualsMatch(*options, problem);
 }
 
 }  // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_user_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_user_test.cc
index d626481..0e34884 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_user_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_user_test.cc
@@ -44,15 +44,17 @@
 
 TEST_F(BundleAdjustmentTest,
        SparseSchur_EigenSparse_UserOrdering) {  // NOLINT
-   Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
-   options.num_threads = 1;
-   options.linear_solver_type = SPARSE_SCHUR;
-   options.sparse_linear_algebra_library_type = EIGEN_SPARSE;
-   options.preconditioner_type = IDENTITY;
+   BundleAdjustmentProblem bundle_adjustment_problem;
+   Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+   options->num_threads = 1;
+   options->linear_solver_type = SPARSE_SCHUR;
+   options->sparse_linear_algebra_library_type = EIGEN_SPARSE;
+   options->preconditioner_type = IDENTITY;
    if (kUserOrdering) {
-    options.linear_solver_ordering.reset();
+    options->linear_solver_ordering.reset();
    }
-  RunSolverForConfigAndExpectResidualsMatch(options);
+   Problem* problem = bundle_adjustment_problem.mutable_problem();
+   RunSolverForConfigAndExpectResidualsMatch(*options, problem);
 }
 
 }  // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_user_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_user_threads_test.cc
index 218c35f..bf7d5f4 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_user_threads_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_eigensparse_user_threads_test.cc
@@ -45,15 +45,17 @@
 
 TEST_F(BundleAdjustmentTest,
        SparseSchur_EigenSparse_UserOrdering_Threads) {  // NOLINT
-   Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
-   options.num_threads = 4;
-   options.linear_solver_type = SPARSE_SCHUR;
-   options.sparse_linear_algebra_library_type = EIGEN_SPARSE;
-   options.preconditioner_type = IDENTITY;
+   BundleAdjustmentProblem bundle_adjustment_problem;
+   Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+   options->num_threads = 4;
+   options->linear_solver_type = SPARSE_SCHUR;
+   options->sparse_linear_algebra_library_type = EIGEN_SPARSE;
+   options->preconditioner_type = IDENTITY;
    if (kUserOrdering) {
-    options.linear_solver_ordering.reset();
+    options->linear_solver_ordering.reset();
    }
-  RunSolverForConfigAndExpectResidualsMatch(options);
+   Problem* problem = bundle_adjustment_problem.mutable_problem();
+   RunSolverForConfigAndExpectResidualsMatch(*options, problem);
 }
 
 }  // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_auto_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_auto_test.cc
index 67fff21..7e8853f 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_auto_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_auto_test.cc
@@ -44,15 +44,17 @@
 
 TEST_F(BundleAdjustmentTest,
        SparseSchur_SuiteSparse_AutomaticOrdering) {  // NOLINT
-   Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
-   options.num_threads = 1;
-   options.linear_solver_type = SPARSE_SCHUR;
-   options.sparse_linear_algebra_library_type = SUITE_SPARSE;
-   options.preconditioner_type = IDENTITY;
+   BundleAdjustmentProblem bundle_adjustment_problem;
+   Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+   options->num_threads = 1;
+   options->linear_solver_type = SPARSE_SCHUR;
+   options->sparse_linear_algebra_library_type = SUITE_SPARSE;
+   options->preconditioner_type = IDENTITY;
    if (kAutomaticOrdering) {
-    options.linear_solver_ordering.reset();
+    options->linear_solver_ordering.reset();
    }
-  RunSolverForConfigAndExpectResidualsMatch(options);
+   Problem* problem = bundle_adjustment_problem.mutable_problem();
+   RunSolverForConfigAndExpectResidualsMatch(*options, problem);
 }
 
 }  // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_auto_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_auto_threads_test.cc
index f0dccb7..823dcfe 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_auto_threads_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_auto_threads_test.cc
@@ -45,15 +45,17 @@
 
 TEST_F(BundleAdjustmentTest,
        SparseSchur_SuiteSparse_AutomaticOrdering_Threads) {  // NOLINT
-   Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
-   options.num_threads = 4;
-   options.linear_solver_type = SPARSE_SCHUR;
-   options.sparse_linear_algebra_library_type = SUITE_SPARSE;
-   options.preconditioner_type = IDENTITY;
+   BundleAdjustmentProblem bundle_adjustment_problem;
+   Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+   options->num_threads = 4;
+   options->linear_solver_type = SPARSE_SCHUR;
+   options->sparse_linear_algebra_library_type = SUITE_SPARSE;
+   options->preconditioner_type = IDENTITY;
    if (kAutomaticOrdering) {
-    options.linear_solver_ordering.reset();
+    options->linear_solver_ordering.reset();
    }
-  RunSolverForConfigAndExpectResidualsMatch(options);
+   Problem* problem = bundle_adjustment_problem.mutable_problem();
+   RunSolverForConfigAndExpectResidualsMatch(*options, problem);
 }
 
 }  // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_user_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_user_test.cc
index eb67b49..a375c94 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_user_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_user_test.cc
@@ -44,15 +44,17 @@
 
 TEST_F(BundleAdjustmentTest,
        SparseSchur_SuiteSparse_UserOrdering) {  // NOLINT
-   Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
-   options.num_threads = 1;
-   options.linear_solver_type = SPARSE_SCHUR;
-   options.sparse_linear_algebra_library_type = SUITE_SPARSE;
-   options.preconditioner_type = IDENTITY;
+   BundleAdjustmentProblem bundle_adjustment_problem;
+   Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+   options->num_threads = 1;
+   options->linear_solver_type = SPARSE_SCHUR;
+   options->sparse_linear_algebra_library_type = SUITE_SPARSE;
+   options->preconditioner_type = IDENTITY;
    if (kUserOrdering) {
-    options.linear_solver_ordering.reset();
+    options->linear_solver_ordering.reset();
    }
-  RunSolverForConfigAndExpectResidualsMatch(options);
+   Problem* problem = bundle_adjustment_problem.mutable_problem();
+   RunSolverForConfigAndExpectResidualsMatch(*options, problem);
 }
 
 }  // namespace internal
diff --git a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_user_threads_test.cc b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_user_threads_test.cc
index c13cc4f..9af1d56 100644
--- a/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_user_threads_test.cc
+++ b/internal/ceres/generated_bundle_adjustment_tests/ba_sparseschur_suitesparse_user_threads_test.cc
@@ -45,15 +45,17 @@
 
 TEST_F(BundleAdjustmentTest,
        SparseSchur_SuiteSparse_UserOrdering_Threads) {  // NOLINT
-   Solver::Options options = *BundleAdjustmentProblem().mutable_solver_options();
-   options.num_threads = 4;
-   options.linear_solver_type = SPARSE_SCHUR;
-   options.sparse_linear_algebra_library_type = SUITE_SPARSE;
-   options.preconditioner_type = IDENTITY;
+   BundleAdjustmentProblem bundle_adjustment_problem;
+   Solver::Options* options = bundle_adjustment_problem.mutable_solver_options();
+   options->num_threads = 4;
+   options->linear_solver_type = SPARSE_SCHUR;
+   options->sparse_linear_algebra_library_type = SUITE_SPARSE;
+   options->preconditioner_type = IDENTITY;
    if (kUserOrdering) {
-    options.linear_solver_ordering.reset();
+    options->linear_solver_ordering.reset();
    }
-  RunSolverForConfigAndExpectResidualsMatch(options);
+   Problem* problem = bundle_adjustment_problem.mutable_problem();
+   RunSolverForConfigAndExpectResidualsMatch(*options, problem);
 }
 
 }  // namespace internal
diff --git a/internal/ceres/system_test.cc b/internal/ceres/system_test.cc
index 5fb520f..ca0f529 100644
--- a/internal/ceres/system_test.cc
+++ b/internal/ceres/system_test.cc
@@ -146,55 +146,69 @@
 typedef SystemTest<PowellsFunction> PowellTest;
 
 TEST_F(PowellTest, DenseQR) {
-  Solver::Options options = *PowellsFunction().mutable_solver_options();
-  options.linear_solver_type = DENSE_QR;
-  RunSolverForConfigAndExpectResidualsMatch(options);
+  PowellsFunction powells_function;
+  Solver::Options* options = powells_function.mutable_solver_options();
+  options->linear_solver_type = DENSE_QR;
+  RunSolverForConfigAndExpectResidualsMatch(*options,
+                                            powells_function.mutable_problem());
 }
 
 TEST_F(PowellTest, DenseNormalCholesky) {
-  Solver::Options options = *PowellsFunction().mutable_solver_options();
-  options.linear_solver_type = DENSE_NORMAL_CHOLESKY;
-  RunSolverForConfigAndExpectResidualsMatch(options);
+  PowellsFunction powells_function;
+  Solver::Options* options = powells_function.mutable_solver_options();
+  options->linear_solver_type = DENSE_NORMAL_CHOLESKY;
+  RunSolverForConfigAndExpectResidualsMatch(*options,
+                                            powells_function.mutable_problem());
 }
 
 TEST_F(PowellTest, DenseSchur) {
-  Solver::Options options = *PowellsFunction().mutable_solver_options();
-  options.linear_solver_type = DENSE_SCHUR;
-  RunSolverForConfigAndExpectResidualsMatch(options);
+  PowellsFunction powells_function;
+  Solver::Options* options = powells_function.mutable_solver_options();
+  options->linear_solver_type = DENSE_SCHUR;
+  RunSolverForConfigAndExpectResidualsMatch(*options,
+                                            powells_function.mutable_problem());
 }
 
 TEST_F(PowellTest, IterativeSchurWithJacobi) {
-  Solver::Options options = *PowellsFunction().mutable_solver_options();
-  options.linear_solver_type = ITERATIVE_SCHUR;
-  options.sparse_linear_algebra_library_type = NO_SPARSE;
-  options.preconditioner_type = JACOBI;
-  RunSolverForConfigAndExpectResidualsMatch(options);
+  PowellsFunction powells_function;
+  Solver::Options* options = powells_function.mutable_solver_options();
+  options->linear_solver_type = ITERATIVE_SCHUR;
+  options->sparse_linear_algebra_library_type = NO_SPARSE;
+  options->preconditioner_type = JACOBI;
+  RunSolverForConfigAndExpectResidualsMatch(*options,
+                                            powells_function.mutable_problem());
 }
 
 #ifndef CERES_NO_SUITESPARSE
 TEST_F(PowellTest, SparseNormalCholeskyUsingSuiteSparse) {
-  Solver::Options options = *PowellsFunction().mutable_solver_options();
-  options.linear_solver_type = SPARSE_NORMAL_CHOLESKY;
-  options.sparse_linear_algebra_library_type = SUITE_SPARSE;
-  RunSolverForConfigAndExpectResidualsMatch(options);
+  PowellsFunction powells_function;
+  Solver::Options* options = powells_function.mutable_solver_options();
+  options->linear_solver_type = SPARSE_NORMAL_CHOLESKY;
+  options->sparse_linear_algebra_library_type = SUITE_SPARSE;
+  RunSolverForConfigAndExpectResidualsMatch(*options,
+                                            powells_function.mutable_problem());
 }
 #endif  // CERES_NO_SUITESPARSE
 
 #ifndef CERES_NO_CXSPARSE
 TEST_F(PowellTest, SparseNormalCholeskyUsingCXSparse) {
-  Solver::Options options = *PowellsFunction().mutable_solver_options();
-  options.linear_solver_type = SPARSE_NORMAL_CHOLESKY;
-  options.sparse_linear_algebra_library_type = CX_SPARSE;
-  RunSolverForConfigAndExpectResidualsMatch(options);
+  PowellsFunction powells_function;
+  Solver::Options* options = powells_function.mutable_solver_options();
+  options->linear_solver_type = SPARSE_NORMAL_CHOLESKY;
+  options->sparse_linear_algebra_library_type = CX_SPARSE;
+  RunSolverForConfigAndExpectResidualsMatch(*options,
+                                            powells_function.mutable_problem());
 }
 #endif  // CERES_NO_CXSPARSE
 
 #ifdef CERES_USE_EIGEN_SPARSE
 TEST_F(PowellTest, SparseNormalCholeskyUsingEigenSparse) {
-  Solver::Options options = *PowellsFunction().mutable_solver_options();
-  options.linear_solver_type = SPARSE_NORMAL_CHOLESKY;
-  options.sparse_linear_algebra_library_type = EIGEN_SPARSE;
-  RunSolverForConfigAndExpectResidualsMatch(options);
+  PowellsFunction powells_function;
+  Solver::Options* options = powells_function.mutable_solver_options();
+  options->linear_solver_type = SPARSE_NORMAL_CHOLESKY;
+  options->sparse_linear_algebra_library_type = EIGEN_SPARSE;
+  RunSolverForConfigAndExpectResidualsMatch(*options,
+                                            powells_function.mutable_problem());
 }
 #endif  // CERES_USE_EIGEN_SPARSE
 
diff --git a/internal/ceres/test_util.h b/internal/ceres/test_util.h
index c4c17d5..e43eb35 100644
--- a/internal/ceres/test_util.h
+++ b/internal/ceres/test_util.h
@@ -78,7 +78,7 @@
 // It is assumed that the SystemTestProblem has an Solver::Options
 // struct that contains the reference Solver configuration.
 template <typename SystemTestProblem>
-class SystemTest : public::testing::Test {
+class SystemTest : public ::testing::Test {
  protected:
   virtual void SetUp() {
     SystemTestProblem system_test_problem;
@@ -88,15 +88,10 @@
         &expected_final_residuals_);
   }
 
-  void RunSolverForConfigAndExpectResidualsMatch(const Solver::Options& options) {
-    LOG(INFO) << "Running solver configuration: "
-              << ToString(options);
-    SystemTestProblem system_test_problem;
+  void RunSolverForConfigAndExpectResidualsMatch(const Solver::Options& options,
+                                                 Problem* problem) {
     std::vector<double> final_residuals;
-    SolveAndEvaluateFinalResiduals(
-        options,
-        system_test_problem.mutable_problem(),
-        &final_residuals);
+    SolveAndEvaluateFinalResiduals(options, problem, &final_residuals);
 
     // We compare solutions by comparing their residual vectors. We do
     // not compare parameter vectors because it is much more brittle
@@ -119,10 +114,10 @@
     Solve(options, problem, &summary);
     CHECK_NE(summary.termination_type, ceres::FAILURE);
     problem->Evaluate(Problem::EvaluateOptions(),
-                      NULL,
+                      nullptr,
                       final_residuals,
-                      NULL,
-                      NULL);
+                      nullptr,
+                      nullptr);
   }
 
   std::vector<double> expected_final_residuals_;
