diff --git a/src/language/ast/ASTExecutionStack.cpp b/src/language/ast/ASTExecutionStack.cpp
index 48add07ecfc0739bbec88a15fe38153abc6ad1ba..a02759b393536735521e4ef0f406805c490c3c4c 100644
--- a/src/language/ast/ASTExecutionStack.cpp
+++ b/src/language/ast/ASTExecutionStack.cpp
@@ -74,6 +74,9 @@ ASTExecutionStack::create(const std::shared_ptr<TAO_PEGTL_NAMESPACE::string_inpu
 void
 ASTExecutionStack::destroy()
 {
+  if (m_instance == nullptr) {
+    throw UnexpectedError("ASTExecutionStack was not created!");
+  }
   delete m_instance;
   m_instance = nullptr;
 }
diff --git a/tests/test_ConcatExpressionProcessor.cpp b/tests/test_ConcatExpressionProcessor.cpp
index 315f89d518e0262cdc6b44d3d99f13673d803168..488698bb3ed44fa2f54ab98b3317735b29e9a87d 100644
--- a/tests/test_ConcatExpressionProcessor.cpp
+++ b/tests/test_ConcatExpressionProcessor.cpp
@@ -2,6 +2,7 @@
 #include <catch2/matchers/catch_matchers_all.hpp>
 
 #include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTExecutionStack.hpp>
 #include <language/ast/ASTModulesImporter.hpp>
 #include <language/ast/ASTNodeAffectationExpressionBuilder.hpp>
 #include <language/ast/ASTNodeDataTypeBuilder.hpp>
@@ -22,6 +23,8 @@
     TAO_PEGTL_NAMESPACE::string_input input{data, "test.pgs"};                \
     auto ast = ASTBuilder::build(input);                                      \
                                                                               \
+    ASTExecutionStack::create();                                              \
+                                                                              \
     ASTModulesImporter{*ast};                                                 \
     ASTNodeTypeCleaner<language::import_instruction>{*ast};                   \
                                                                               \
@@ -44,6 +47,8 @@
     auto attributes = symbol->attributes();                                   \
     auto value      = std::get<decltype(expected_value)>(attributes.value()); \
                                                                               \
+    ASTExecutionStack::destroy();                                             \
+                                                                              \
     REQUIRE(value == expected_value);                                         \
   }
 
diff --git a/tests/test_DoWhileProcessor.cpp b/tests/test_DoWhileProcessor.cpp
index ca8138191bf37e963d56492adb682b3cc66fe161..3cdabe47d1aacb1ef62594c47b9ccf27df0c4583 100644
--- a/tests/test_DoWhileProcessor.cpp
+++ b/tests/test_DoWhileProcessor.cpp
@@ -2,6 +2,7 @@
 #include <catch2/matchers/catch_matchers_all.hpp>
 
 #include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTExecutionStack.hpp>
 #include <language/ast/ASTModulesImporter.hpp>
 #include <language/ast/ASTNodeAffectationExpressionBuilder.hpp>
 #include <language/ast/ASTNodeDataTypeBuilder.hpp>
@@ -21,6 +22,8 @@
     TAO_PEGTL_NAMESPACE::string_input input{data, "test.pgs"};                \
     auto ast = ASTBuilder::build(input);                                      \
                                                                               \
+    ASTExecutionStack::create();                                              \
+                                                                              \
     ASTModulesImporter{*ast};                                                 \
     ASTNodeTypeCleaner<language::import_instruction>{*ast};                   \
                                                                               \
@@ -43,6 +46,8 @@
     auto attributes = symbol->attributes();                                   \
     auto value      = std::get<decltype(expected_value)>(attributes.value()); \
                                                                               \
+    ASTExecutionStack::destroy();                                             \
+                                                                              \
     REQUIRE(value == expected_value);                                         \
   }
 
@@ -51,11 +56,15 @@
     TAO_PEGTL_NAMESPACE::string_input input{data, "test.pgs"};        \
     auto ast = ASTBuilder::build(input);                              \
                                                                       \
+    ASTExecutionStack::create();                                      \
+                                                                      \
     ASTModulesImporter{*ast};                                         \
     ASTNodeTypeCleaner<language::import_instruction>{*ast};           \
                                                                       \
     ASTSymbolTableBuilder{*ast};                                      \
                                                                       \
+    ASTExecutionStack::destroy();                                     \
+                                                                      \
     REQUIRE_THROWS_WITH(ASTNodeDataTypeBuilder{*ast}, error_message); \
   }
 
diff --git a/tests/test_ForProcessor.cpp b/tests/test_ForProcessor.cpp
index b55de095c9335178bd0dcc92543218a1bde9c14e..111a9526a57eaf4b6ba088ed26adf5b4d97f826f 100644
--- a/tests/test_ForProcessor.cpp
+++ b/tests/test_ForProcessor.cpp
@@ -2,6 +2,7 @@
 #include <catch2/matchers/catch_matchers_all.hpp>
 
 #include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTExecutionStack.hpp>
 #include <language/ast/ASTModulesImporter.hpp>
 #include <language/ast/ASTNodeAffectationExpressionBuilder.hpp>
 #include <language/ast/ASTNodeDataTypeBuilder.hpp>
@@ -21,6 +22,8 @@
     TAO_PEGTL_NAMESPACE::string_input input{data, "test.pgs"};                \
     auto ast = ASTBuilder::build(input);                                      \
                                                                               \
+    ASTExecutionStack::create();                                              \
+                                                                              \
     ASTModulesImporter{*ast};                                                 \
     ASTNodeTypeCleaner<language::import_instruction>{*ast};                   \
                                                                               \
@@ -43,12 +46,17 @@
     auto attributes = symbol->attributes();                                   \
     auto value      = std::get<decltype(expected_value)>(attributes.value()); \
                                                                               \
+    ASTExecutionStack::destroy();                                             \
+                                                                              \
     REQUIRE(value == expected_value);                                         \
   }
 
 #define CHECK_FOR_PROCESSOR_THROWS_WITH(data, error_message)          \
   {                                                                   \
     TAO_PEGTL_NAMESPACE::string_input input{data, "test.pgs"};        \
+                                                                      \
+    ASTExecutionStack::create();                                      \
+                                                                      \
     auto ast = ASTBuilder::build(input);                              \
                                                                       \
     ASTModulesImporter{*ast};                                         \
@@ -56,6 +64,8 @@
                                                                       \
     ASTSymbolTableBuilder{*ast};                                      \
                                                                       \
+    ASTExecutionStack::destroy();                                     \
+                                                                      \
     REQUIRE_THROWS_WITH(ASTNodeDataTypeBuilder{*ast}, error_message); \
   }
 
diff --git a/tests/test_FunctionProcessor.cpp b/tests/test_FunctionProcessor.cpp
index 2a11caff89e418956cea81a8f4f64276c93c5756..a3eae8485001fcacadecd51bd65b7cb82f93ae6c 100644
--- a/tests/test_FunctionProcessor.cpp
+++ b/tests/test_FunctionProcessor.cpp
@@ -2,6 +2,7 @@
 #include <catch2/matchers/catch_matchers_all.hpp>
 
 #include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTExecutionStack.hpp>
 #include <language/ast/ASTModulesImporter.hpp>
 #include <language/ast/ASTNodeDataTypeBuilder.hpp>
 #include <language/ast/ASTNodeDeclarationToAffectationConverter.hpp>
@@ -20,6 +21,8 @@
     TAO_PEGTL_NAMESPACE::string_input input{data, "test.pgs"};                \
     auto ast = ASTBuilder::build(input);                                      \
                                                                               \
+    ASTExecutionStack::create();                                              \
+                                                                              \
     ASTModulesImporter{*ast};                                                 \
     ASTNodeTypeCleaner<language::import_instruction>{*ast};                   \
                                                                               \
@@ -43,6 +46,8 @@
     auto attributes = symbol->attributes();                                   \
     auto value      = std::get<decltype(expected_value)>(attributes.value()); \
                                                                               \
+    ASTExecutionStack::destroy();                                             \
+                                                                              \
     REQUIRE(value == expected_value);                                         \
   }
 
@@ -51,6 +56,8 @@
     TAO_PEGTL_NAMESPACE::string_input input{data, "test.pgs"}; \
     auto ast = ASTBuilder::build(input);                       \
                                                                \
+    ASTExecutionStack::create();                               \
+                                                               \
     ASTModulesImporter{*ast};                                  \
     ASTNodeTypeCleaner<language::import_instruction>{*ast};    \
                                                                \
@@ -64,6 +71,8 @@
     ASTNodeExpressionBuilder{*ast};                            \
     ExecutionPolicy exec_policy;                               \
     REQUIRE_THROWS_WITH(ast->execute(exec_policy), error_msg); \
+                                                               \
+    ASTExecutionStack::destroy();                              \
   }
 
 // clazy:excludeall=non-pod-global-static
diff --git a/tests/test_IfProcessor.cpp b/tests/test_IfProcessor.cpp
index 8c0ee437d76585d3a0381d136ed70de136ed0cba..147dcd84ea0fa28f33eab7e5c03c7819cad41974 100644
--- a/tests/test_IfProcessor.cpp
+++ b/tests/test_IfProcessor.cpp
@@ -2,6 +2,7 @@
 #include <catch2/matchers/catch_matchers_all.hpp>
 
 #include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTExecutionStack.hpp>
 #include <language/ast/ASTModulesImporter.hpp>
 #include <language/ast/ASTNodeDataTypeBuilder.hpp>
 #include <language/ast/ASTNodeDeclarationToAffectationConverter.hpp>
@@ -19,6 +20,8 @@
     TAO_PEGTL_NAMESPACE::string_input input{data, "test.pgs"};                \
     auto ast = ASTBuilder::build(input);                                      \
                                                                               \
+    ASTExecutionStack::create();                                              \
+                                                                              \
     ASTModulesImporter{*ast};                                                 \
     ASTNodeTypeCleaner<language::import_instruction>{*ast};                   \
                                                                               \
@@ -41,6 +44,8 @@
     auto attributes = symbol->attributes();                                   \
     auto value      = std::get<decltype(expected_value)>(attributes.value()); \
                                                                               \
+    ASTExecutionStack::destroy();                                             \
+                                                                              \
     REQUIRE(value == expected_value);                                         \
   }
 
@@ -49,11 +54,15 @@
     TAO_PEGTL_NAMESPACE::string_input input{data, "test.pgs"};        \
     auto ast = ASTBuilder::build(input);                              \
                                                                       \
+    ASTExecutionStack::create();                                      \
+                                                                      \
     ASTModulesImporter{*ast};                                         \
     ASTNodeTypeCleaner<language::import_instruction>{*ast};           \
                                                                       \
     ASTSymbolTableBuilder{*ast};                                      \
                                                                       \
+    ASTExecutionStack::destroy();                                     \
+                                                                      \
     REQUIRE_THROWS_WITH(ASTNodeDataTypeBuilder{*ast}, error_message); \
   }
 
diff --git a/tests/test_IncDecExpressionProcessor.cpp b/tests/test_IncDecExpressionProcessor.cpp
index 960845cf229abb9f436e6016e6202d5b0d8dcb99..2c51b86b8c1445a65bb2bdf0cc774e732ed2d7fd 100644
--- a/tests/test_IncDecExpressionProcessor.cpp
+++ b/tests/test_IncDecExpressionProcessor.cpp
@@ -2,6 +2,7 @@
 #include <catch2/matchers/catch_matchers_all.hpp>
 
 #include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTExecutionStack.hpp>
 #include <language/ast/ASTModulesImporter.hpp>
 #include <language/ast/ASTNodeDataTypeBuilder.hpp>
 #include <language/ast/ASTNodeDeclarationToAffectationConverter.hpp>
@@ -19,6 +20,8 @@
     TAO_PEGTL_NAMESPACE::string_input input{data, "test.pgs"};                \
     auto ast = ASTBuilder::build(input);                                      \
                                                                               \
+    ASTExecutionStack::create();                                              \
+                                                                              \
     ASTModulesImporter{*ast};                                                 \
     ASTNodeTypeCleaner<language::import_instruction>{*ast};                   \
                                                                               \
@@ -41,6 +44,8 @@
     auto attributes = symbol->attributes();                                   \
     auto value      = std::get<decltype(expected_value)>(attributes.value()); \
                                                                               \
+    ASTExecutionStack::destroy();                                             \
+                                                                              \
     REQUIRE(value == expected_value);                                         \
   }
 
@@ -49,12 +54,16 @@
     TAO_PEGTL_NAMESPACE::string_input input{data, "test.pgs"};        \
     auto ast = ASTBuilder::build(input);                              \
                                                                       \
+    ASTExecutionStack::create();                                      \
+                                                                      \
     ASTModulesImporter{*ast};                                         \
     ASTNodeTypeCleaner<language::import_instruction>{*ast};           \
                                                                       \
     ASTSymbolTableBuilder{*ast};                                      \
                                                                       \
     REQUIRE_THROWS_WITH(ASTNodeDataTypeBuilder{*ast}, error_message); \
+                                                                      \
+    ASTExecutionStack::destroy();                                     \
   }
 
 #define CHECK_INCDEC_THROWS_WITH(data, error_message)              \
@@ -62,6 +71,8 @@
     TAO_PEGTL_NAMESPACE::string_input input{data, "test.pgs"};     \
     auto ast = ASTBuilder::build(input);                           \
                                                                    \
+    ASTExecutionStack::create();                                   \
+                                                                   \
     ASTSymbolTableBuilder{*ast};                                   \
     ASTNodeDataTypeBuilder{*ast};                                  \
                                                                    \
@@ -72,6 +83,8 @@
     ExecutionPolicy exec_policy;                                   \
                                                                    \
     REQUIRE_THROWS_WITH(ast->execute(exec_policy), error_message); \
+                                                                   \
+    ASTExecutionStack::destroy();                                  \
   }
 
 // clazy:excludeall=non-pod-global-static
diff --git a/tests/test_IntegrateCellArray.cpp b/tests/test_IntegrateCellArray.cpp
index 738fad05fa74ff45820a5f4071dff9a91abbc42b..f556c87fa8fe91304b7f712888daa7e281d84229 100644
--- a/tests/test_IntegrateCellArray.cpp
+++ b/tests/test_IntegrateCellArray.cpp
@@ -122,10 +122,14 @@ let g: R^1 -> R, x -> 2 * exp(x[0]) + 3;
               PUGS_LAMBDA(const CellId cell_id) { cell_integral_array[cell_id][1] = cell_g_integral[cell_id]; });
           }
 
+          ASTNode::setStackDetails(false);
+
           CellArray<double> integrate_array =
             IntegrateCellArray<double(TinyVector<Dimension>)>::integrate(function_symbol_id_list, quadrature_descriptor,
                                                                          *mesh_1d);
 
+          ASTNode::setStackDetails(true);
+
           REQUIRE(same_item_integral(cell_integral_array, integrate_array));
         }
       }
@@ -209,10 +213,14 @@ let g: R^2 -> R, x -> 2*exp(x[0])*sin(x[1])+3;
               PUGS_LAMBDA(const CellId cell_id) { cell_integral_array[cell_id][1] = cell_g_integral[cell_id]; });
           }
 
+          ASTNode::setStackDetails(false);
+
           CellArray<double> integrate_array =
             IntegrateCellArray<double(TinyVector<Dimension>)>::integrate(function_symbol_id_list, quadrature_descriptor,
                                                                          *mesh_2d);
 
+          ASTNode::setStackDetails(true);
+
           REQUIRE(same_item_integral(cell_integral_array, integrate_array));
         }
       }
@@ -307,10 +315,14 @@ let g: R^3 -> R, x -> 2 * exp(x[0]) * sin(x[1]) * x[2] + 3;
               PUGS_LAMBDA(const CellId cell_id) { cell_integral_array[cell_id][1] = cell_g_integral[cell_id]; });
           }
 
+          ASTNode::setStackDetails(false);
+
           CellArray<double> integrate_array =
             IntegrateCellArray<double(TinyVector<Dimension>)>::integrate(function_symbol_id_list, quadrature_descriptor,
                                                                          *mesh_3d);
 
+          ASTNode::setStackDetails(true);
+
           REQUIRE(same_item_integral(cell_integral_array, integrate_array));
         }
       }
@@ -418,10 +430,14 @@ let g: R^1 -> R, x -> 2 * exp(x[0]) + 3;
               PUGS_LAMBDA(const CellId cell_id) { cell_integral_array[cell_id][1] = cell_g_integral[cell_id]; });
           }
 
+          ASTNode::setStackDetails(false);
+
           Table<const double> integrate_value =
             IntegrateCellArray<double(TinyVector<Dimension>)>::integrate(function_symbol_id_list, quadrature_descriptor,
                                                                          *mesh_1d, cell_list);
 
+          ASTNode::setStackDetails(true);
+
           REQUIRE(same_item_integral(cell_integral_array, integrate_value));
         }
       }
@@ -514,10 +530,14 @@ let g: R^2 -> R, x -> 2*exp(x[0])*sin(x[1])+3;
               PUGS_LAMBDA(const CellId cell_id) { cell_integral_array[cell_id][1] = cell_g_integral[cell_id]; });
           }
 
+          ASTNode::setStackDetails(false);
+
           Table<const double> integrate_value =
             IntegrateCellArray<double(TinyVector<Dimension>)>::integrate(function_symbol_id_list, quadrature_descriptor,
                                                                          *mesh_2d, cell_list);
 
+          ASTNode::setStackDetails(true);
+
           REQUIRE(same_item_integral(cell_integral_array, integrate_value));
         }
       }
@@ -621,10 +641,14 @@ let g: R^3 -> R, x -> 2 * exp(x[0]) * sin(x[1]) * x[2] + 3;
               PUGS_LAMBDA(const CellId cell_id) { cell_integral_array[cell_id][1] = cell_g_integral[cell_id]; });
           }
 
+          ASTNode::setStackDetails(false);
+
           Table<const double> integrate_value =
             IntegrateCellArray<double(TinyVector<Dimension>)>::integrate(function_symbol_id_list, quadrature_descriptor,
                                                                          *mesh_3d, cell_list);
 
+          ASTNode::setStackDetails(true);
+
           REQUIRE(same_item_integral(cell_integral_array, integrate_value));
         }
       }
diff --git a/tests/test_IntegrateCellValue.cpp b/tests/test_IntegrateCellValue.cpp
index ab2c86f82c7b2b10db0a54555d70a06558460468..b13ec6149538ee9bf4e643360dd52ca5ee3de21e 100644
--- a/tests/test_IntegrateCellValue.cpp
+++ b/tests/test_IntegrateCellValue.cpp
@@ -91,10 +91,14 @@ let R2x2_1d: R^1 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[0]) + 3, sin(x[0] - 2 *
           };
           CellIntegrator::integrateTo(f, quadrature_descriptor, *mesh_1d, cell_integral);
 
+          ASTNode::setStackDetails(false);
+
           CellValue<R2x2> integrate_value =
             IntegrateCellValue<R2x2(TinyVector<Dimension>)>::integrate(function_symbol_id, quadrature_descriptor,
                                                                        *mesh_1d);
 
+          ASTNode::setStackDetails(true);
+
           REQUIRE(same_item_integral(cell_integral, integrate_value));
         }
       }
@@ -150,10 +154,14 @@ let R3_2d: R^2 -> R^3, x -> [2*exp(x[0])*sin(x[1])+3, x[0]-2*x[1], 3];
           };
           CellIntegrator::integrateTo(f, quadrature_descriptor, *mesh_2d, cell_integral);
 
+          ASTNode::setStackDetails(false);
+
           CellValue<R3> integrate_value =
             IntegrateCellValue<R3(TinyVector<Dimension>)>::integrate(function_symbol_id, quadrature_descriptor,
                                                                      *mesh_2d);
 
+          ASTNode::setStackDetails(true);
+
           REQUIRE(same_item_integral(cell_integral, integrate_value));
         }
       }
@@ -217,10 +225,14 @@ let scalar_3d: R^3 -> R, x -> 2 * exp(x[0]) * sin(x[1]) * x[2] + 3;
           auto f = [](const TinyVector<Dimension>& x) -> double { return 2 * exp(x[0]) * sin(x[1]) * x[2] + 3; };
           CellIntegrator::integrateTo(f, quadrature_descriptor, *mesh_3d, cell_integral);
 
+          ASTNode::setStackDetails(false);
+
           CellValue<double> integrate_value =
             IntegrateCellValue<double(TinyVector<Dimension>)>::integrate(function_symbol_id, quadrature_descriptor,
                                                                          *mesh_3d);
 
+          ASTNode::setStackDetails(true);
+
           REQUIRE(same_item_integral(cell_integral, integrate_value));
         }
       }
@@ -296,10 +308,15 @@ let scalar_1d: R^1 -> R, x -> 2 * exp(x[0]) + 3;
           auto f = [](const TinyVector<Dimension>& x) -> double { return 2 * std::exp(x[0]) + 3; };
 
           Array<const double> cell_integral = CellIntegrator::integrate(f, quadrature_descriptor, *mesh_1d, cell_list);
+
+          ASTNode::setStackDetails(false);
+
           Array<const double> integrate_value =
             IntegrateCellValue<double(TinyVector<Dimension>)>::integrate(function_symbol_id, quadrature_descriptor,
                                                                          *mesh_1d, cell_list);
 
+          ASTNode::setStackDetails(true);
+
           REQUIRE(same_item_integral(cell_integral, integrate_value));
         }
       }
@@ -365,10 +382,15 @@ let R3_2d: R^2 -> R^3, x -> [2*exp(x[0])*sin(x[1])+3, x[0]-2*x[1], 3];
           };
 
           Array<const R3> cell_integral = CellIntegrator::integrate(f, quadrature_descriptor, *mesh_2d, cell_list);
+
+          ASTNode::setStackDetails(false);
+
           Array<const R3> integrate_value =
             IntegrateCellValue<R3(TinyVector<Dimension>)>::integrate(function_symbol_id, quadrature_descriptor,
                                                                      *mesh_2d, cell_list);
 
+          ASTNode::setStackDetails(true);
+
           REQUIRE(same_item_integral(cell_integral, integrate_value));
         }
       }
@@ -446,10 +468,14 @@ let R2x2_3d: R^3 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[1]) + 3 * cos(x[2]), sin
 
           Array<const R2x2> cell_integral = CellIntegrator::integrate(f, quadrature_descriptor, *mesh_3d, cell_list);
 
+          ASTNode::setStackDetails(false);
+
           Array<R2x2> integrate_value =
             IntegrateCellValue<R2x2(TinyVector<Dimension>)>::integrate(function_symbol_id, quadrature_descriptor,
                                                                        *mesh_3d, cell_list);
 
+          ASTNode::setStackDetails(true);
+
           REQUIRE(same_item_integral(cell_integral, integrate_value));
         }
       }
diff --git a/tests/test_IntegrateOnCells.cpp b/tests/test_IntegrateOnCells.cpp
index 93d1c6806dda456aa17b7f138c6d1f23d8e33315..d49ccb2c118c10bbbd611b31cf6af9cb35cb2ec8 100644
--- a/tests/test_IntegrateOnCells.cpp
+++ b/tests/test_IntegrateOnCells.cpp
@@ -95,9 +95,14 @@ let R2x2_1d: R^1 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[0]) + 3, sin(x[0] - 2 *
               CellIntegrator::integrateTo(f, quadrature_descriptor, *mesh_1d, cell_integral);
 
               Array<double> integrate_value(mesh_1d->numberOfCells());
+
+              ASTNode::setStackDetails(false);
+
               IntegrateOnCells<double(TinyVector<Dimension>)>::integrateTo(function_symbol_id, quadrature_descriptor,
                                                                            *mesh_1d, integrate_value);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
 
@@ -115,9 +120,14 @@ let R2x2_1d: R^1 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[0]) + 3, sin(x[0] - 2 *
               CellIntegrator::integrateTo(f, quadrature_descriptor, *mesh_1d, cell_integral);
 
               Array<R3> integrate_value(mesh_1d->numberOfCells());
+
+              ASTNode::setStackDetails(false);
+
               IntegrateOnCells<R3(TinyVector<Dimension>)>::integrateTo(function_symbol_id, quadrature_descriptor,
                                                                        *mesh_1d, integrate_value);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
 
@@ -137,9 +147,14 @@ let R2x2_1d: R^1 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[0]) + 3, sin(x[0] - 2 *
               CellIntegrator::integrateTo(f, quadrature_descriptor, *mesh_1d, cell_integral);
 
               Array<R2x2> integrate_value(mesh_1d->numberOfCells());
+
+              ASTNode::setStackDetails(false);
+
               IntegrateOnCells<R2x2(TinyVector<Dimension>)>::integrateTo(function_symbol_id, quadrature_descriptor,
                                                                          *mesh_1d, integrate_value);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
           }
@@ -197,9 +212,14 @@ let R2x2_2d: R^2 -> R^2x2, x -> [[2*exp(x[0])*sin(x[1])+3, sin(x[0]-2*x[1])], [3
               CellIntegrator::integrateTo(f, quadrature_descriptor, *mesh_2d, cell_integral);
 
               Array<double> integrate_value(mesh_2d->numberOfCells());
+
+              ASTNode::setStackDetails(false);
+
               IntegrateOnCells<double(TinyVector<Dimension>)>::integrateTo(function_symbol_id, quadrature_descriptor,
                                                                            *mesh_2d, integrate_value);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
 
@@ -219,9 +239,14 @@ let R2x2_2d: R^2 -> R^2x2, x -> [[2*exp(x[0])*sin(x[1])+3, sin(x[0]-2*x[1])], [3
               CellIntegrator::integrateTo(f, quadrature_descriptor, *mesh_2d, cell_integral);
 
               Array<R3> integrate_value(mesh_2d->numberOfCells());
+
+              ASTNode::setStackDetails(false);
+
               IntegrateOnCells<R3(TinyVector<Dimension>)>::integrateTo(function_symbol_id, quadrature_descriptor,
                                                                        *mesh_2d, integrate_value);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
 
@@ -241,9 +266,14 @@ let R2x2_2d: R^2 -> R^2x2, x -> [[2*exp(x[0])*sin(x[1])+3, sin(x[0]-2*x[1])], [3
               CellIntegrator::integrateTo(f, quadrature_descriptor, *mesh_2d, cell_integral);
 
               Array<R2x2> integrate_value(mesh_2d->numberOfCells());
+
+              ASTNode::setStackDetails(false);
+
               IntegrateOnCells<R2x2(TinyVector<Dimension>)>::integrateTo(function_symbol_id, quadrature_descriptor,
                                                                          *mesh_2d, integrate_value);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
           }
@@ -311,9 +341,14 @@ let R2x2_3d: R^3 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[1]) + 3 * cos(x[2]), sin
               CellIntegrator::integrateTo(f, quadrature_descriptor, *mesh_3d, cell_integral);
 
               Array<double> integrate_value(mesh_3d->numberOfCells());
+
+              ASTNode::setStackDetails(false);
+
               IntegrateOnCells<double(TinyVector<Dimension>)>::integrateTo(function_symbol_id, quadrature_descriptor,
                                                                            *mesh_3d, integrate_value);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
 
@@ -333,9 +368,14 @@ let R2x2_3d: R^3 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[1]) + 3 * cos(x[2]), sin
               CellIntegrator::integrateTo(f, quadrature_descriptor, *mesh_3d, cell_integral);
 
               Array<R3> integrate_value(mesh_3d->numberOfCells());
+
+              ASTNode::setStackDetails(false);
+
               IntegrateOnCells<R3(TinyVector<Dimension>)>::integrateTo(function_symbol_id, quadrature_descriptor,
                                                                        *mesh_3d, integrate_value);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
 
@@ -356,9 +396,14 @@ let R2x2_3d: R^3 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[1]) + 3 * cos(x[2]), sin
               CellIntegrator::integrateTo(f, quadrature_descriptor, *mesh_3d, cell_integral);
 
               Array<R2x2> integrate_value(mesh_3d->numberOfCells());
+
+              ASTNode::setStackDetails(false);
+
               IntegrateOnCells<R2x2(TinyVector<Dimension>)>::integrateTo(function_symbol_id, quadrature_descriptor,
                                                                          *mesh_3d, integrate_value);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
           }
@@ -439,10 +484,15 @@ let R2x2_1d: R^1 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[0]) + 3, sin(x[0] - 2 *
 
               Array<const double> cell_integral =
                 CellIntegrator::integrate(f, quadrature_descriptor, *mesh_1d, cell_list);
+
+              ASTNode::setStackDetails(false);
+
               Array<const double> integrate_value =
                 IntegrateOnCells<double(TinyVector<Dimension>)>::integrate(function_symbol_id, quadrature_descriptor,
                                                                            *mesh_1d, cell_list);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
 
@@ -458,10 +508,15 @@ let R2x2_1d: R^1 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[0]) + 3, sin(x[0] - 2 *
               auto f = [](const TinyVector<Dimension>& x) -> R3 { return R3{2 * exp(x[0]) + 3, x[0] - 2, 3}; };
 
               Array<const R3> cell_integral = CellIntegrator::integrate(f, quadrature_descriptor, *mesh_1d, cell_list);
+
+              ASTNode::setStackDetails(false);
+
               Array<const R3> integrate_value =
                 IntegrateOnCells<R3(TinyVector<Dimension>)>::integrate(function_symbol_id, quadrature_descriptor,
                                                                        *mesh_1d, cell_list);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
 
@@ -480,10 +535,15 @@ let R2x2_1d: R^1 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[0]) + 3, sin(x[0] - 2 *
 
               Array<const R2x2> cell_integral =
                 CellIntegrator::integrate(f, quadrature_descriptor, *mesh_1d, cell_list);
+
+              ASTNode::setStackDetails(false);
+
               Array<const R2x2> integrate_value =
                 IntegrateOnCells<R2x2(TinyVector<Dimension>)>::integrate(function_symbol_id, quadrature_descriptor,
                                                                          *mesh_1d, cell_list);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
           }
@@ -551,10 +611,15 @@ let R2x2_2d: R^2 -> R^2x2, x -> [[2*exp(x[0])*sin(x[1])+3, sin(x[0]-2*x[1])], [3
 
               Array<const double> cell_integral =
                 CellIntegrator::integrate(f, quadrature_descriptor, *mesh_2d, cell_list);
+
+              ASTNode::setStackDetails(false);
+
               Array<const double> integrate_value =
                 IntegrateOnCells<double(TinyVector<Dimension>)>::integrate(function_symbol_id, quadrature_descriptor,
                                                                            *mesh_2d, cell_list);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
 
@@ -572,10 +637,15 @@ let R2x2_2d: R^2 -> R^2x2, x -> [[2*exp(x[0])*sin(x[1])+3, sin(x[0]-2*x[1])], [3
               };
 
               Array<const R3> cell_integral = CellIntegrator::integrate(f, quadrature_descriptor, *mesh_2d, cell_list);
+
+              ASTNode::setStackDetails(false);
+
               Array<const R3> integrate_value =
                 IntegrateOnCells<R3(TinyVector<Dimension>)>::integrate(function_symbol_id, quadrature_descriptor,
                                                                        *mesh_2d, cell_list);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
 
@@ -594,10 +664,15 @@ let R2x2_2d: R^2 -> R^2x2, x -> [[2*exp(x[0])*sin(x[1])+3, sin(x[0]-2*x[1])], [3
 
               Array<const R2x2> cell_integral =
                 CellIntegrator::integrate(f, quadrature_descriptor, *mesh_2d, cell_list);
+
+              ASTNode::setStackDetails(false);
+
               Array<const R2x2> integrate_value =
                 IntegrateOnCells<R2x2(TinyVector<Dimension>)>::integrate(function_symbol_id, quadrature_descriptor,
                                                                          *mesh_2d, cell_list);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
           }
@@ -675,10 +750,15 @@ let R2x2_3d: R^3 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[1]) + 3 * cos(x[2]), sin
 
               Array<const double> cell_integral =
                 CellIntegrator::integrate(f, quadrature_descriptor, *mesh_3d, cell_list);
+
+              ASTNode::setStackDetails(false);
+
               Array<const double> integrate_value =
                 IntegrateOnCells<double(TinyVector<Dimension>)>::integrate(function_symbol_id, quadrature_descriptor,
                                                                            *mesh_3d, cell_list);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
 
@@ -696,10 +776,15 @@ let R2x2_3d: R^3 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[1]) + 3 * cos(x[2]), sin
               };
 
               Array<const R3> cell_integral = CellIntegrator::integrate(f, quadrature_descriptor, *mesh_3d, cell_list);
+
+              ASTNode::setStackDetails(false);
+
               Array<const R3> integrate_value =
                 IntegrateOnCells<R3(TinyVector<Dimension>)>::integrate(function_symbol_id, quadrature_descriptor,
                                                                        *mesh_3d, cell_list);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
 
@@ -719,10 +804,15 @@ let R2x2_3d: R^3 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[1]) + 3 * cos(x[2]), sin
 
               Array<const R2x2> cell_integral =
                 CellIntegrator::integrate(f, quadrature_descriptor, *mesh_3d, cell_list);
+
+              ASTNode::setStackDetails(false);
+
               Array<const R2x2> integrate_value =
                 IntegrateOnCells<R2x2(TinyVector<Dimension>)>::integrate(function_symbol_id, quadrature_descriptor,
                                                                          *mesh_3d, cell_list);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
           }
@@ -798,9 +888,14 @@ let R2x2_1d: R^1 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[0]) + 3, sin(x[0] - 2 *
               CellIntegrator::integrateTo(f, quadrature_descriptor, *mesh_1d, cell_integral);
 
               Array<double> integrate_value(mesh_1d->numberOfCells());
+
+              ASTNode::setStackDetails(false);
+
               IntegrateOnCells<double(TinyVector<Dimension>)>::integrateTo(function_symbol_id, quadrature_descriptor,
                                                                            *mesh_1d, integrate_value);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
 
@@ -818,9 +913,14 @@ let R2x2_1d: R^1 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[0]) + 3, sin(x[0] - 2 *
               CellIntegrator::integrateTo(f, quadrature_descriptor, *mesh_1d, cell_integral);
 
               Array<R3> integrate_value(mesh_1d->numberOfCells());
+
+              ASTNode::setStackDetails(false);
+
               IntegrateOnCells<R3(TinyVector<Dimension>)>::integrateTo(function_symbol_id, quadrature_descriptor,
                                                                        *mesh_1d, integrate_value);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
 
@@ -840,9 +940,14 @@ let R2x2_1d: R^1 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[0]) + 3, sin(x[0] - 2 *
               CellIntegrator::integrateTo(f, quadrature_descriptor, *mesh_1d, cell_integral);
 
               Array<R2x2> integrate_value(mesh_1d->numberOfCells());
+
+              ASTNode::setStackDetails(false);
+
               IntegrateOnCells<R2x2(TinyVector<Dimension>)>::integrateTo(function_symbol_id, quadrature_descriptor,
                                                                          *mesh_1d, integrate_value);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
           }
@@ -900,9 +1005,14 @@ let R2x2_2d: R^2 -> R^2x2, x -> [[2*exp(x[0])*sin(x[1])+3, sin(x[0]-2*x[1])], [3
               CellIntegrator::integrateTo(f, quadrature_descriptor, *mesh_2d, cell_integral);
 
               Array<double> integrate_value(mesh_2d->numberOfCells());
+
+              ASTNode::setStackDetails(false);
+
               IntegrateOnCells<double(TinyVector<Dimension>)>::integrateTo(function_symbol_id, quadrature_descriptor,
                                                                            *mesh_2d, integrate_value);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
 
@@ -922,9 +1032,14 @@ let R2x2_2d: R^2 -> R^2x2, x -> [[2*exp(x[0])*sin(x[1])+3, sin(x[0]-2*x[1])], [3
               CellIntegrator::integrateTo(f, quadrature_descriptor, *mesh_2d, cell_integral);
 
               Array<R3> integrate_value(mesh_2d->numberOfCells());
+
+              ASTNode::setStackDetails(false);
+
               IntegrateOnCells<R3(TinyVector<Dimension>)>::integrateTo(function_symbol_id, quadrature_descriptor,
                                                                        *mesh_2d, integrate_value);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
 
@@ -944,9 +1059,14 @@ let R2x2_2d: R^2 -> R^2x2, x -> [[2*exp(x[0])*sin(x[1])+3, sin(x[0]-2*x[1])], [3
               CellIntegrator::integrateTo(f, quadrature_descriptor, *mesh_2d, cell_integral);
 
               Array<R2x2> integrate_value(mesh_2d->numberOfCells());
+
+              ASTNode::setStackDetails(false);
+
               IntegrateOnCells<R2x2(TinyVector<Dimension>)>::integrateTo(function_symbol_id, quadrature_descriptor,
                                                                          *mesh_2d, integrate_value);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
           }
@@ -1014,9 +1134,14 @@ let R2x2_3d: R^3 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[1]) + 3 * cos(x[2]), sin
               CellIntegrator::integrateTo(f, quadrature_descriptor, *mesh_3d, cell_integral);
 
               Array<double> integrate_value(mesh_3d->numberOfCells());
+
+              ASTNode::setStackDetails(false);
+
               IntegrateOnCells<double(TinyVector<Dimension>)>::integrateTo(function_symbol_id, quadrature_descriptor,
                                                                            *mesh_3d, integrate_value);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
 
@@ -1036,9 +1161,14 @@ let R2x2_3d: R^3 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[1]) + 3 * cos(x[2]), sin
               CellIntegrator::integrateTo(f, quadrature_descriptor, *mesh_3d, cell_integral);
 
               Array<R3> integrate_value(mesh_3d->numberOfCells());
+
+              ASTNode::setStackDetails(false);
+
               IntegrateOnCells<R3(TinyVector<Dimension>)>::integrateTo(function_symbol_id, quadrature_descriptor,
                                                                        *mesh_3d, integrate_value);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
 
@@ -1059,9 +1189,14 @@ let R2x2_3d: R^3 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[1]) + 3 * cos(x[2]), sin
               CellIntegrator::integrateTo(f, quadrature_descriptor, *mesh_3d, cell_integral);
 
               Array<R2x2> integrate_value(mesh_3d->numberOfCells());
+
+              ASTNode::setStackDetails(false);
+
               IntegrateOnCells<R2x2(TinyVector<Dimension>)>::integrateTo(function_symbol_id, quadrature_descriptor,
                                                                          *mesh_3d, integrate_value);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
           }
@@ -1142,10 +1277,15 @@ let R2x2_1d: R^1 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[0]) + 3, sin(x[0] - 2 *
 
               Array<const double> cell_integral =
                 CellIntegrator::integrate(f, quadrature_descriptor, *mesh_1d, cell_list);
+
+              ASTNode::setStackDetails(false);
+
               Array<const double> integrate_value =
                 IntegrateOnCells<double(TinyVector<Dimension>)>::integrate(function_symbol_id, quadrature_descriptor,
                                                                            *mesh_1d, cell_list);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
 
@@ -1161,10 +1301,15 @@ let R2x2_1d: R^1 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[0]) + 3, sin(x[0] - 2 *
               auto f = [](const TinyVector<Dimension>& x) -> R3 { return R3{2 * exp(x[0]) + 3, x[0] - 2, 3}; };
 
               Array<const R3> cell_integral = CellIntegrator::integrate(f, quadrature_descriptor, *mesh_1d, cell_list);
+
+              ASTNode::setStackDetails(false);
+
               Array<const R3> integrate_value =
                 IntegrateOnCells<R3(TinyVector<Dimension>)>::integrate(function_symbol_id, quadrature_descriptor,
                                                                        *mesh_1d, cell_list);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
 
@@ -1183,10 +1328,15 @@ let R2x2_1d: R^1 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[0]) + 3, sin(x[0] - 2 *
 
               Array<const R2x2> cell_integral =
                 CellIntegrator::integrate(f, quadrature_descriptor, *mesh_1d, cell_list);
+
+              ASTNode::setStackDetails(false);
+
               Array<const R2x2> integrate_value =
                 IntegrateOnCells<R2x2(TinyVector<Dimension>)>::integrate(function_symbol_id, quadrature_descriptor,
                                                                          *mesh_1d, cell_list);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
           }
@@ -1254,10 +1404,15 @@ let R2x2_2d: R^2 -> R^2x2, x -> [[2*exp(x[0])*sin(x[1])+3, sin(x[0]-2*x[1])], [3
 
               Array<const double> cell_integral =
                 CellIntegrator::integrate(f, quadrature_descriptor, *mesh_2d, cell_list);
+
+              ASTNode::setStackDetails(false);
+
               Array<const double> integrate_value =
                 IntegrateOnCells<double(TinyVector<Dimension>)>::integrate(function_symbol_id, quadrature_descriptor,
                                                                            *mesh_2d, cell_list);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
 
@@ -1275,10 +1430,15 @@ let R2x2_2d: R^2 -> R^2x2, x -> [[2*exp(x[0])*sin(x[1])+3, sin(x[0]-2*x[1])], [3
               };
 
               Array<const R3> cell_integral = CellIntegrator::integrate(f, quadrature_descriptor, *mesh_2d, cell_list);
+
+              ASTNode::setStackDetails(false);
+
               Array<const R3> integrate_value =
                 IntegrateOnCells<R3(TinyVector<Dimension>)>::integrate(function_symbol_id, quadrature_descriptor,
                                                                        *mesh_2d, cell_list);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
 
@@ -1297,10 +1457,15 @@ let R2x2_2d: R^2 -> R^2x2, x -> [[2*exp(x[0])*sin(x[1])+3, sin(x[0]-2*x[1])], [3
 
               Array<const R2x2> cell_integral =
                 CellIntegrator::integrate(f, quadrature_descriptor, *mesh_2d, cell_list);
+
+              ASTNode::setStackDetails(false);
+
               Array<const R2x2> integrate_value =
                 IntegrateOnCells<R2x2(TinyVector<Dimension>)>::integrate(function_symbol_id, quadrature_descriptor,
                                                                          *mesh_2d, cell_list);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
           }
@@ -1378,10 +1543,15 @@ let R2x2_3d: R^3 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[1]) + 3 * cos(x[2]), sin
 
               Array<const double> cell_integral =
                 CellIntegrator::integrate(f, quadrature_descriptor, *mesh_3d, cell_list);
+
+              ASTNode::setStackDetails(false);
+
               Array<const double> integrate_value =
                 IntegrateOnCells<double(TinyVector<Dimension>)>::integrate(function_symbol_id, quadrature_descriptor,
                                                                            *mesh_3d, cell_list);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
 
@@ -1399,10 +1569,15 @@ let R2x2_3d: R^3 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[1]) + 3 * cos(x[2]), sin
               };
 
               Array<const R3> cell_integral = CellIntegrator::integrate(f, quadrature_descriptor, *mesh_3d, cell_list);
+
+              ASTNode::setStackDetails(false);
+
               Array<const R3> integrate_value =
                 IntegrateOnCells<R3(TinyVector<Dimension>)>::integrate(function_symbol_id, quadrature_descriptor,
                                                                        *mesh_3d, cell_list);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
 
@@ -1422,10 +1597,15 @@ let R2x2_3d: R^3 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[1]) + 3 * cos(x[2]), sin
 
               Array<const R2x2> cell_integral =
                 CellIntegrator::integrate(f, quadrature_descriptor, *mesh_3d, cell_list);
+
+              ASTNode::setStackDetails(false);
+
               Array<const R2x2> integrate_value =
                 IntegrateOnCells<R2x2(TinyVector<Dimension>)>::integrate(function_symbol_id, quadrature_descriptor,
                                                                          *mesh_3d, cell_list);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
           }
@@ -1501,9 +1681,14 @@ let R2x2_1d: R^1 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[0]) + 3, sin(x[0] - 2 *
               CellIntegrator::integrateTo(f, quadrature_descriptor, *mesh_1d, cell_integral);
 
               Array<double> integrate_value(mesh_1d->numberOfCells());
+
+              ASTNode::setStackDetails(false);
+
               IntegrateOnCells<double(TinyVector<Dimension>)>::integrateTo(function_symbol_id, quadrature_descriptor,
                                                                            *mesh_1d, integrate_value);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
 
@@ -1521,9 +1706,14 @@ let R2x2_1d: R^1 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[0]) + 3, sin(x[0] - 2 *
               CellIntegrator::integrateTo(f, quadrature_descriptor, *mesh_1d, cell_integral);
 
               Array<R3> integrate_value(mesh_1d->numberOfCells());
+
+              ASTNode::setStackDetails(false);
+
               IntegrateOnCells<R3(TinyVector<Dimension>)>::integrateTo(function_symbol_id, quadrature_descriptor,
                                                                        *mesh_1d, integrate_value);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
 
@@ -1543,9 +1733,14 @@ let R2x2_1d: R^1 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[0]) + 3, sin(x[0] - 2 *
               CellIntegrator::integrateTo(f, quadrature_descriptor, *mesh_1d, cell_integral);
 
               Array<R2x2> integrate_value(mesh_1d->numberOfCells());
+
+              ASTNode::setStackDetails(false);
+
               IntegrateOnCells<R2x2(TinyVector<Dimension>)>::integrateTo(function_symbol_id, quadrature_descriptor,
                                                                          *mesh_1d, integrate_value);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
           }
@@ -1603,9 +1798,14 @@ let R2x2_2d: R^2 -> R^2x2, x -> [[2*exp(x[0])*sin(x[1])+3, sin(x[0]-2*x[1])], [3
               CellIntegrator::integrateTo(f, quadrature_descriptor, *mesh_2d, cell_integral);
 
               Array<double> integrate_value(mesh_2d->numberOfCells());
+
+              ASTNode::setStackDetails(false);
+
               IntegrateOnCells<double(TinyVector<Dimension>)>::integrateTo(function_symbol_id, quadrature_descriptor,
                                                                            *mesh_2d, integrate_value);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
 
@@ -1625,9 +1825,14 @@ let R2x2_2d: R^2 -> R^2x2, x -> [[2*exp(x[0])*sin(x[1])+3, sin(x[0]-2*x[1])], [3
               CellIntegrator::integrateTo(f, quadrature_descriptor, *mesh_2d, cell_integral);
 
               Array<R3> integrate_value(mesh_2d->numberOfCells());
+
+              ASTNode::setStackDetails(false);
+
               IntegrateOnCells<R3(TinyVector<Dimension>)>::integrateTo(function_symbol_id, quadrature_descriptor,
                                                                        *mesh_2d, integrate_value);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
 
@@ -1647,9 +1852,14 @@ let R2x2_2d: R^2 -> R^2x2, x -> [[2*exp(x[0])*sin(x[1])+3, sin(x[0]-2*x[1])], [3
               CellIntegrator::integrateTo(f, quadrature_descriptor, *mesh_2d, cell_integral);
 
               Array<R2x2> integrate_value(mesh_2d->numberOfCells());
+
+              ASTNode::setStackDetails(false);
+
               IntegrateOnCells<R2x2(TinyVector<Dimension>)>::integrateTo(function_symbol_id, quadrature_descriptor,
                                                                          *mesh_2d, integrate_value);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
           }
@@ -1717,9 +1927,14 @@ let R2x2_3d: R^3 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[1]) + 3 * cos(x[2]), sin
               CellIntegrator::integrateTo(f, quadrature_descriptor, *mesh_3d, cell_integral);
 
               Array<double> integrate_value(mesh_3d->numberOfCells());
+
+              ASTNode::setStackDetails(false);
+
               IntegrateOnCells<double(TinyVector<Dimension>)>::integrateTo(function_symbol_id, quadrature_descriptor,
                                                                            *mesh_3d, integrate_value);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
 
@@ -1739,9 +1954,14 @@ let R2x2_3d: R^3 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[1]) + 3 * cos(x[2]), sin
               CellIntegrator::integrateTo(f, quadrature_descriptor, *mesh_3d, cell_integral);
 
               Array<R3> integrate_value(mesh_3d->numberOfCells());
+
+              ASTNode::setStackDetails(false);
+
               IntegrateOnCells<R3(TinyVector<Dimension>)>::integrateTo(function_symbol_id, quadrature_descriptor,
                                                                        *mesh_3d, integrate_value);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
 
@@ -1762,9 +1982,14 @@ let R2x2_3d: R^3 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[1]) + 3 * cos(x[2]), sin
               CellIntegrator::integrateTo(f, quadrature_descriptor, *mesh_3d, cell_integral);
 
               Array<R2x2> integrate_value(mesh_3d->numberOfCells());
+
+              ASTNode::setStackDetails(false);
+
               IntegrateOnCells<R2x2(TinyVector<Dimension>)>::integrateTo(function_symbol_id, quadrature_descriptor,
                                                                          *mesh_3d, integrate_value);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
           }
@@ -1845,10 +2070,15 @@ let R2x2_1d: R^1 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[0]) + 3, sin(x[0] - 2 *
 
               Array<const double> cell_integral =
                 CellIntegrator::integrate(f, quadrature_descriptor, *mesh_1d, cell_list);
+
+              ASTNode::setStackDetails(false);
+
               Array<const double> integrate_value =
                 IntegrateOnCells<double(TinyVector<Dimension>)>::integrate(function_symbol_id, quadrature_descriptor,
                                                                            *mesh_1d, cell_list);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
 
@@ -1864,9 +2094,13 @@ let R2x2_1d: R^1 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[0]) + 3, sin(x[0] - 2 *
               auto f = [](const TinyVector<Dimension>& x) -> R3 { return R3{2 * exp(x[0]) + 3, x[0] - 2, 3}; };
 
               Array<const R3> cell_integral = CellIntegrator::integrate(f, quadrature_descriptor, *mesh_1d, cell_list);
+
+              ASTNode::setStackDetails(false);
+
               Array<const R3> integrate_value =
                 IntegrateOnCells<R3(TinyVector<Dimension>)>::integrate(function_symbol_id, quadrature_descriptor,
                                                                        *mesh_1d, cell_list);
+              ASTNode::setStackDetails(true);
 
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
@@ -1886,10 +2120,15 @@ let R2x2_1d: R^1 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[0]) + 3, sin(x[0] - 2 *
 
               Array<const R2x2> cell_integral =
                 CellIntegrator::integrate(f, quadrature_descriptor, *mesh_1d, cell_list);
+
+              ASTNode::setStackDetails(false);
+
               Array<const R2x2> integrate_value =
                 IntegrateOnCells<R2x2(TinyVector<Dimension>)>::integrate(function_symbol_id, quadrature_descriptor,
                                                                          *mesh_1d, cell_list);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
           }
@@ -1957,10 +2196,15 @@ let R2x2_2d: R^2 -> R^2x2, x -> [[2*exp(x[0])*sin(x[1])+3, sin(x[0]-2*x[1])], [3
 
               Array<const double> cell_integral =
                 CellIntegrator::integrate(f, quadrature_descriptor, *mesh_2d, cell_list);
+
+              ASTNode::setStackDetails(false);
+
               Array<const double> integrate_value =
                 IntegrateOnCells<double(TinyVector<Dimension>)>::integrate(function_symbol_id, quadrature_descriptor,
                                                                            *mesh_2d, cell_list);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
 
@@ -1978,10 +2222,15 @@ let R2x2_2d: R^2 -> R^2x2, x -> [[2*exp(x[0])*sin(x[1])+3, sin(x[0]-2*x[1])], [3
               };
 
               Array<const R3> cell_integral = CellIntegrator::integrate(f, quadrature_descriptor, *mesh_2d, cell_list);
+
+              ASTNode::setStackDetails(false);
+
               Array<const R3> integrate_value =
                 IntegrateOnCells<R3(TinyVector<Dimension>)>::integrate(function_symbol_id, quadrature_descriptor,
                                                                        *mesh_2d, cell_list);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
 
@@ -2000,10 +2249,15 @@ let R2x2_2d: R^2 -> R^2x2, x -> [[2*exp(x[0])*sin(x[1])+3, sin(x[0]-2*x[1])], [3
 
               Array<const R2x2> cell_integral =
                 CellIntegrator::integrate(f, quadrature_descriptor, *mesh_2d, cell_list);
+
+              ASTNode::setStackDetails(false);
+
               Array<const R2x2> integrate_value =
                 IntegrateOnCells<R2x2(TinyVector<Dimension>)>::integrate(function_symbol_id, quadrature_descriptor,
                                                                          *mesh_2d, cell_list);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
           }
@@ -2081,10 +2335,15 @@ let R2x2_3d: R^3 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[1]) + 3 * cos(x[2]), sin
 
               Array<const double> cell_integral =
                 CellIntegrator::integrate(f, quadrature_descriptor, *mesh_3d, cell_list);
+
+              ASTNode::setStackDetails(false);
+
               Array<const double> integrate_value =
                 IntegrateOnCells<double(TinyVector<Dimension>)>::integrate(function_symbol_id, quadrature_descriptor,
                                                                            *mesh_3d, cell_list);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
 
@@ -2102,10 +2361,15 @@ let R2x2_3d: R^3 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[1]) + 3 * cos(x[2]), sin
               };
 
               Array<const R3> cell_integral = CellIntegrator::integrate(f, quadrature_descriptor, *mesh_3d, cell_list);
+
+              ASTNode::setStackDetails(false);
+
               Array<const R3> integrate_value =
                 IntegrateOnCells<R3(TinyVector<Dimension>)>::integrate(function_symbol_id, quadrature_descriptor,
                                                                        *mesh_3d, cell_list);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
 
@@ -2125,10 +2389,15 @@ let R2x2_3d: R^3 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[1]) + 3 * cos(x[2]), sin
 
               Array<const R2x2> cell_integral =
                 CellIntegrator::integrate(f, quadrature_descriptor, *mesh_3d, cell_list);
+
+              ASTNode::setStackDetails(false);
+
               Array<const R2x2> integrate_value =
                 IntegrateOnCells<R2x2(TinyVector<Dimension>)>::integrate(function_symbol_id, quadrature_descriptor,
                                                                          *mesh_3d, cell_list);
 
+              ASTNode::setStackDetails(true);
+
               REQUIRE(same_item_integral(cell_integral, integrate_value));
             }
           }
diff --git a/tests/test_ListAffectationProcessor.cpp b/tests/test_ListAffectationProcessor.cpp
index 73733b9833200f492c5e022ff1b727e57d104640..a288187e0a806e424006d6031fddcbb95240dca1 100644
--- a/tests/test_ListAffectationProcessor.cpp
+++ b/tests/test_ListAffectationProcessor.cpp
@@ -2,6 +2,7 @@
 #include <catch2/matchers/catch_matchers_all.hpp>
 
 #include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTExecutionStack.hpp>
 #include <language/ast/ASTModulesImporter.hpp>
 #include <language/ast/ASTNodeDataTypeBuilder.hpp>
 #include <language/ast/ASTNodeDeclarationToAffectationConverter.hpp>
@@ -19,6 +20,8 @@
     TAO_PEGTL_NAMESPACE::string_input input{data, "test.pgs"};                \
     auto ast = ASTBuilder::build(input);                                      \
                                                                               \
+    ASTExecutionStack::create();                                              \
+                                                                              \
     ASTModulesImporter{*ast};                                                 \
     ASTNodeTypeCleaner<language::import_instruction>{*ast};                   \
                                                                               \
@@ -41,6 +44,8 @@
     auto attributes = symbol->attributes();                                   \
     auto value      = std::get<decltype(expected_value)>(attributes.value()); \
                                                                               \
+    ASTExecutionStack::destroy();                                             \
+                                                                              \
     REQUIRE(value == expected_value);                                         \
   }
 
@@ -49,6 +54,8 @@
     TAO_PEGTL_NAMESPACE::string_input input{data, "test.pgs"};     \
     auto ast = ASTBuilder::build(input);                           \
                                                                    \
+    ASTExecutionStack::create();                                   \
+                                                                   \
     ASTModulesImporter{*ast};                                      \
     ASTNodeTypeCleaner<language::import_instruction>{*ast};        \
                                                                    \
@@ -61,6 +68,8 @@
     ASTNodeExpressionBuilder{*ast};                                \
     ExecutionPolicy exec_policy;                                   \
     REQUIRE_THROWS_WITH(ast->execute(exec_policy), error_message); \
+                                                                   \
+    ASTExecutionStack::destroy();                                  \
   }
 
 // clazy:excludeall=non-pod-global-static
diff --git a/tests/test_NameProcessor.cpp b/tests/test_NameProcessor.cpp
index 1433eff93265614a36dfd0dcb16d4d9c7db13257..cec1a06489539392ca8a5062c02e148f7268cafd 100644
--- a/tests/test_NameProcessor.cpp
+++ b/tests/test_NameProcessor.cpp
@@ -2,6 +2,7 @@
 #include <catch2/matchers/catch_matchers_all.hpp>
 
 #include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTExecutionStack.hpp>
 #include <language/ast/ASTModulesImporter.hpp>
 #include <language/ast/ASTNodeDataTypeBuilder.hpp>
 #include <language/ast/ASTNodeDeclarationToAffectationConverter.hpp>
@@ -30,6 +31,8 @@ n = 2;
     TAO_PEGTL_NAMESPACE::string_input input{data, "test.pgs"};
     auto ast = ASTBuilder::build(input);
 
+    ASTExecutionStack::create();
+
     ASTModulesImporter{*ast};
     ASTNodeTypeCleaner<language::import_instruction>{*ast};
 
@@ -49,6 +52,8 @@ n = 2;
     auto symbol_n = symbol_table->find("n", use_position).first->attributes();
     auto value_n  = std::get<long unsigned int>(symbol_n.value());
 
+    ASTExecutionStack::destroy();
+
     REQUIRE(value_n == 2);
 
     auto symbol_m = symbol_table->find("m", use_position).first->attributes();
@@ -75,6 +80,8 @@ let m:N, m = n;
     TAO_PEGTL_NAMESPACE::string_input input{data, "test.pgs"};
     auto ast = ASTBuilder::build(input);
 
+    ASTExecutionStack::create();
+
     ASTModulesImporter{*ast};
     ASTNodeTypeCleaner<language::import_instruction>{*ast};
 
@@ -87,5 +94,7 @@ let m:N, m = n;
     ASTNodeExpressionBuilder{*ast};
     ExecutionPolicy exec_policy;
     REQUIRE_THROWS_WITH(ast->execute(exec_policy), "trying to use uninitialized symbol 'n'");
+
+    ASTExecutionStack::destroy();
   }
 }
diff --git a/tests/test_PugsFunctionAdapter.cpp b/tests/test_PugsFunctionAdapter.cpp
index 68d02133b26e07382dac7f6588f4554093bd2151..b4844cfa99c995a3e477143567d9045b2aaf9742 100644
--- a/tests/test_PugsFunctionAdapter.cpp
+++ b/tests/test_PugsFunctionAdapter.cpp
@@ -2,6 +2,7 @@
 #include <catch2/matchers/catch_matchers_all.hpp>
 
 #include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTExecutionStack.hpp>
 #include <language/ast/ASTModulesImporter.hpp>
 #include <language/ast/ASTNodeDataTypeBuilder.hpp>
 #include <language/ast/ASTNodeExpressionBuilder.hpp>
@@ -90,6 +91,8 @@ let R33toR33zero: R^3x3 -> R^3x3, x -> 0;
 
     auto ast = ASTBuilder::build(input);
 
+    ASTExecutionStack::create();
+
     ASTModulesImporter{*ast};
     ASTNodeTypeCleaner<language::import_instruction>{*ast};
 
@@ -361,6 +364,8 @@ let R33toR33zero: R^3x3 -> R^3x3, x -> 0;
 
       REQUIRE(result == TinyMatrix<3>{0, 0, 0, 0, 0, 0, 0, 0, 0});
     }
+
+    ASTExecutionStack::destroy();
   }
 
   SECTION("Errors calls")
@@ -378,6 +383,8 @@ let R33toR22: R^3x3 -> R^2x2, x -> [[x[0,0], x[0,1]+x[0,2]], [x[2,0]*x[1,1], x[2
 
     auto ast = ASTBuilder::build(input);
 
+    ASTExecutionStack::create();
+
     ASTModulesImporter{*ast};
     ASTNodeTypeCleaner<language::import_instruction>{*ast};
 
@@ -492,5 +499,7 @@ let R33toR22: R^3x3 -> R^2x2, x -> [[x[0,0], x[0,1]+x[0,2]], [x[2,0]*x[1,1], x[2
                           "note: expecting R -> R\n"
                           "note: provided function R33toR22: R^3x3 -> R^2x2");
     }
+
+    ASTExecutionStack::destroy();
   }
 }
diff --git a/tests/test_TupleToVectorProcessor.cpp b/tests/test_TupleToVectorProcessor.cpp
index 0eab5884c6a590a8adf8ee656bd62cf3b528deb5..ea370e56dd2e11ccc359afacf3f2880f8e30b1e3 100644
--- a/tests/test_TupleToVectorProcessor.cpp
+++ b/tests/test_TupleToVectorProcessor.cpp
@@ -2,6 +2,7 @@
 #include <catch2/matchers/catch_matchers_all.hpp>
 
 #include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTExecutionStack.hpp>
 #include <language/ast/ASTModulesImporter.hpp>
 #include <language/ast/ASTNodeDataTypeBuilder.hpp>
 #include <language/ast/ASTNodeDeclarationToAffectationConverter.hpp>
@@ -19,6 +20,8 @@
     TAO_PEGTL_NAMESPACE::string_input input{data, "test.pgs"};                \
     auto ast = ASTBuilder::build(input);                                      \
                                                                               \
+    ASTExecutionStack::create();                                              \
+                                                                              \
     ASTModulesImporter{*ast};                                                 \
     ASTNodeTypeCleaner<language::import_instruction>{*ast};                   \
                                                                               \
@@ -42,6 +45,8 @@
     auto attributes = symbol->attributes();                                   \
     auto value      = std::get<decltype(expected_value)>(attributes.value()); \
                                                                               \
+    ASTExecutionStack::destroy();                                             \
+                                                                              \
     REQUIRE(value == expected_value);                                         \
   }
 
@@ -51,6 +56,8 @@
       TAO_PEGTL_NAMESPACE::string_input input{data, "test.pgs"}; \
       auto ast = ASTBuilder::build(input);                       \
                                                                  \
+      ASTExecutionStack::create();                               \
+                                                                 \
       ASTModulesImporter{*ast};                                  \
       ASTNodeTypeCleaner<language::import_instruction>{*ast};    \
                                                                  \
@@ -66,6 +73,8 @@
       ast->execute(exec_policy);                                 \
     };                                                           \
                                                                  \
+    ASTExecutionStack::destroy();                                \
+                                                                 \
     REQUIRE_THROWS_WITH(eval(), error_message);                  \
   }
 
diff --git a/tests/test_UnaryExpressionProcessor.cpp b/tests/test_UnaryExpressionProcessor.cpp
index 235ba29d9f370b53abbf82a5d027797bd834e672..4dd2aa38358a7849490998c1d5535c39585791c7 100644
--- a/tests/test_UnaryExpressionProcessor.cpp
+++ b/tests/test_UnaryExpressionProcessor.cpp
@@ -4,6 +4,7 @@
 #include <FixturesForBuiltinT.hpp>
 
 #include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTExecutionStack.hpp>
 #include <language/ast/ASTModulesImporter.hpp>
 #include <language/ast/ASTNodeDataTypeBuilder.hpp>
 #include <language/ast/ASTNodeDeclarationToAffectationConverter.hpp>
@@ -29,6 +30,8 @@
     TAO_PEGTL_NAMESPACE::string_input input{data, "test.pgs"};                \
     auto ast = ASTBuilder::build(input);                                      \
                                                                               \
+    ASTExecutionStack::create();                                              \
+                                                                              \
     ASTModulesImporter{*ast};                                                 \
     ASTNodeTypeCleaner<language::import_instruction>{*ast};                   \
                                                                               \
@@ -51,6 +54,8 @@
     auto attributes = symbol->attributes();                                   \
     auto value      = std::get<decltype(expected_value)>(attributes.value()); \
                                                                               \
+    ASTExecutionStack::destroy();                                             \
+                                                                              \
     REQUIRE(value == expected_value);                                         \
   }
 
@@ -59,9 +64,13 @@
     TAO_PEGTL_NAMESPACE::string_input input{data, "test.pgs"};        \
     auto ast = ASTBuilder::build(input);                              \
                                                                       \
+    ASTExecutionStack::create();                                      \
+                                                                      \
     ASTSymbolTableBuilder{*ast};                                      \
                                                                       \
     REQUIRE_THROWS_WITH(ASTNodeDataTypeBuilder{*ast}, error_message); \
+                                                                      \
+    ASTExecutionStack::destroy();                                     \
   }
 
 // clazy:excludeall=non-pod-global-static
@@ -82,6 +91,8 @@ TEST_CASE("UnaryExpressionProcessor", "[language]")
     TAO_PEGTL_NAMESPACE::string_input input{data, "test.pgs"};
     auto ast = ASTBuilder::build(input);
 
+    ASTExecutionStack::create();
+
     ASTModulesImporter{*ast};
 
     BasicAffectationRegisterFor<EmbeddedData>{ASTNodeDataType::build<ASTNodeDataType::type_id_t>("builtin_t")};
@@ -132,6 +143,9 @@ TEST_CASE("UnaryExpressionProcessor", "[language]")
     auto embedded_value = std::get<EmbeddedData>(attributes.value());
 
     double value = *dynamic_cast<const DataHandler<const double>&>(embedded_value.get()).data_ptr();
+
+    ASTExecutionStack::destroy();
+
     REQUIRE(value == double{-3.2});
   }
 
diff --git a/tests/test_WhileProcessor.cpp b/tests/test_WhileProcessor.cpp
index 69fa63d729c669dd4aba67f29887699147f428db..b6a04250b5a510bf2a763e90fbbbbc7c5b00745e 100644
--- a/tests/test_WhileProcessor.cpp
+++ b/tests/test_WhileProcessor.cpp
@@ -2,6 +2,7 @@
 #include <catch2/matchers/catch_matchers_all.hpp>
 
 #include <language/ast/ASTBuilder.hpp>
+#include <language/ast/ASTExecutionStack.hpp>
 #include <language/ast/ASTModulesImporter.hpp>
 #include <language/ast/ASTNodeAffectationExpressionBuilder.hpp>
 #include <language/ast/ASTNodeDataTypeBuilder.hpp>
@@ -20,6 +21,8 @@
     TAO_PEGTL_NAMESPACE::string_input input{data, "test.pgs"};                \
     auto ast = ASTBuilder::build(input);                                      \
                                                                               \
+    ASTExecutionStack::create();                                              \
+                                                                              \
     ASTModulesImporter{*ast};                                                 \
     ASTNodeTypeCleaner<language::import_instruction>{*ast};                   \
                                                                               \
@@ -42,6 +45,8 @@
     auto attributes = symbol->attributes();                                   \
     auto value      = std::get<decltype(expected_value)>(attributes.value()); \
                                                                               \
+    ASTExecutionStack::destroy();                                             \
+                                                                              \
     REQUIRE(value == expected_value);                                         \
   }
 
@@ -50,7 +55,11 @@
     TAO_PEGTL_NAMESPACE::string_input input{data, "test.pgs"};        \
     auto ast = ASTBuilder::build(input);                              \
                                                                       \
+    ASTExecutionStack::create();                                      \
+                                                                      \
     ASTSymbolTableBuilder{*ast};                                      \
+    \
+    ASTExecutionStack::destroy();                                     \
                                                                       \
     REQUIRE_THROWS_WITH(ASTNodeDataTypeBuilder{*ast}, error_message); \
   }