diff --git a/example.env b/example.env
index 6a5c600a44acf107854ce2df380d40521499726e..89f58881af28ad4a838b10bb4c7fb3540e38313a 100644
--- a/example.env
+++ b/example.env
@@ -15,7 +15,7 @@ BASE_URL="http://localhost:3000"
 CHILDREN_KEY="enfants"
 
 # Path to file containing decompositions in JSON format
-DECOMPOSITION_PATH="../openfisca-france-json/custom/decompositions.json"
+DECOMPOSITION_PATH="../openfisca-france-json/decompositions_customized.json"
 
 # Name of variable used as root of decomposition
 DECOMPOSITION_ROOT="revenu_disponible"
diff --git a/package-lock.json b/package-lock.json
index 35d102f9e54f7530662d44ec3aa94e3f4a97aa7f..25565be80f2471c99c15683da7b9fd163c9684e5 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -14,7 +14,7 @@
         "@auditors/core": "^0.1.7",
         "@fontsource/lato": "^4.3.0",
         "@fontsource/lora": "^4.3.0",
-        "@openfisca/ast": "^0.8.9",
+        "@openfisca/ast": "^0.9.1",
         "@sveltejs/adapter-node": "next",
         "@sveltejs/kit": "next",
         "@tailwindcss/forms": "^0.3.2",
@@ -1907,9 +1907,9 @@
       }
     },
     "node_modules/@openfisca/ast": {
-      "version": "0.8.9",
-      "resolved": "https://registry.npmjs.org/@openfisca/ast/-/ast-0.8.9.tgz",
-      "integrity": "sha512-8V+hFc1lJOx4VqG9V+MxP7miJ68IxlxEeOD1cHVKI5HZVXA1ZebBzHWNcPiWLlr61FvwPrfcgni+9cZQN9tCpg==",
+      "version": "0.9.1",
+      "resolved": "https://registry.npmjs.org/@openfisca/ast/-/ast-0.9.1.tgz",
+      "integrity": "sha512-MPlbVhe6zk78RptA/Q6KI5i6t9k7jIR7aQ2oRFa8Q2ql0//9aet/8rXWO2798i40+/X48Ug3hAe1LNQWC6Lplw==",
       "dev": true,
       "dependencies": {
         "@auditors/core": "^0.1.11",
@@ -8235,9 +8235,9 @@
       }
     },
     "@openfisca/ast": {
-      "version": "0.8.9",
-      "resolved": "https://registry.npmjs.org/@openfisca/ast/-/ast-0.8.9.tgz",
-      "integrity": "sha512-8V+hFc1lJOx4VqG9V+MxP7miJ68IxlxEeOD1cHVKI5HZVXA1ZebBzHWNcPiWLlr61FvwPrfcgni+9cZQN9tCpg==",
+      "version": "0.9.1",
+      "resolved": "https://registry.npmjs.org/@openfisca/ast/-/ast-0.9.1.tgz",
+      "integrity": "sha512-MPlbVhe6zk78RptA/Q6KI5i6t9k7jIR7aQ2oRFa8Q2ql0//9aet/8rXWO2798i40+/X48Ug3hAe1LNQWC6Lplw==",
       "dev": true,
       "requires": {
         "@auditors/core": "^0.1.11",
diff --git a/package.json b/package.json
index 126a0524098287343300e091c080f5921bf59b67..4c8d333b4fb1fc0c41f7a6c361bfd63650fd44e8 100644
--- a/package.json
+++ b/package.json
@@ -18,7 +18,7 @@
     "@auditors/core": "^0.1.7",
     "@fontsource/lato": "^4.3.0",
     "@fontsource/lora": "^4.3.0",
-    "@openfisca/ast": "^0.8.9",
+    "@openfisca/ast": "^0.9.1",
     "@sveltejs/adapter-node": "next",
     "@sveltejs/kit": "next",
     "@tailwindcss/forms": "^0.3.2",
diff --git a/src/lib/decompositions.ts b/src/lib/decompositions.ts
index fdd9e6a8964ac73bdf6e8e546389e1c3a67f1fe6..387d2e059aa636d606e9c8bba3a06fe6ac3aa323 100644
--- a/src/lib/decompositions.ts
+++ b/src/lib/decompositions.ts
@@ -1,4 +1,7 @@
-import type { Decomposition as DecompositionJson } from "@openfisca/ast"
+import type {
+  Decomposition as DecompositionJson,
+  DecompositionReference,
+} from "@openfisca/ast"
 
 export interface DecompositionCore extends DecompositionJson {
   lastReview?: string
@@ -37,6 +40,7 @@ export function decompositionByNameFromCore(
   name: string,
   parentName: string | undefined = undefined,
   index = 0,
+  negate: boolean | undefined = undefined,
   decompositionByName: DecompositionByName = {},
   visitedNames = new Set<string>(),
 ): DecompositionByName | undefined {
@@ -58,14 +62,16 @@ export function decompositionByNameFromCore(
     label: decompositionCore.label,
     lastReview: decompositionCore.lastReview,
     name,
-    negate: decompositionCore.negate,
+    negate,
   }
   decompositionByName[name] = decomposition
   if (parentName !== undefined) {
     decomposition.parentName = parentName
   }
   if (decompositionCore.children !== undefined) {
-    decomposition.childrenName = decompositionCore.children
+    decomposition.childrenName = decompositionCore.children.map(
+      ({ name }) => name,
+    )
     let ancestor: Decomposition | undefined = undefined
     let depth = 0
     for (const ancestorName of iterDecompositionAncestorsName(
@@ -90,13 +96,14 @@ export function decompositionByNameFromCore(
     }
     for (const [
       childIndex,
-      childName,
+      childReference,
     ] of decompositionCore.children.entries()) {
       decompositionByNameFromCore(
         decompositionCoreByName,
-        childName,
+        childReference.name,
         name,
         childIndex,
+        childReference.negate,
         decompositionByName,
         visitedNames,
       )
@@ -282,10 +289,10 @@ export function* walkDecompositionsCore(
     yield [name, decompositionCore]
   }
   if (decompositionCore.children !== undefined) {
-    for (const childName of decompositionCore.children) {
+    for (const childReference of decompositionCore.children) {
       yield* walkDecompositionsCore(
         decompositionCoreByName,
-        childName,
+        childReference.name,
         depthFirst,
       )
     }
@@ -308,10 +315,10 @@ export function* walkDecompositionsCoreName(
     yield name
   }
   if (decompositionCore.children !== undefined) {
-    for (const childName of decompositionCore.children) {
+    for (const childReference of decompositionCore.children) {
       yield* walkDecompositionsCoreName(
         decompositionCoreByName,
-        childName,
+        childReference.name,
         depthFirst,
       )
     }