diff --git a/src/template/ast/ASTNode.tt b/src/template/ast/ASTNode.tt
index a7c287596cb2e2a9a415e3138ff62d5e407bacfe..f1bf99b41c7fee55df6f72b6a2c47d451ae7a13c 100644
--- a/src/template/ast/ASTNode.tt
+++ b/src/template/ast/ASTNode.tt
@@ -420,12 +420,15 @@ ASTNode.getChild [[
 $if(RewriteEnabled)
  $if(RewriteCircularNTA)
     $ASTNode node = this.getChildNoTransform(i);
+    $include(ASTNode.incHookGetChild)
     if (node != null && node.mayHaveRewrite()) {
+      $include(ASTNode.incHookGetChildEnterEval)
       $ASTNode rewritten = node.rewrittenNode();
       if (rewritten != node) {
         rewritten.setParent(this);
         node = rewritten;
       }
+      $include(ASTNode.incHookGetChildExitEval)
     }
     return (T) node;
  $else
@@ -513,7 +516,6 @@ $endif
       return null;
     }
     T child = (T) children[i];
-    $include(ASTNode.incHookGetChildNT)
     return child;
   }
 ]]
diff --git a/src/template/incremental/Tracking.tt b/src/template/incremental/Tracking.tt
index a94462671f96e5f7451f90d018d9e8e0a3a6c406..b37e88d11c6da1a790c05cdf55ed32cb47c5db47 100644
--- a/src/template/incremental/Tracking.tt
+++ b/src/template/incremental/Tracking.tt
@@ -329,6 +329,69 @@ $endif
 $endif
 ]]
 
+ASTNode.incHookGetChild = [[
+$if(IncrementalEnabled)
+
+$if(IncrementalLevelParam)
+if (getChild_handler[i] == null) {
+  $if(IncrementalPropLimit)
+  getChild_handler[i] = new $DDGNodeName(this, "getChild", Integer.valueOf(i), !child.mayHaveRewrite());
+  $else
+  getChild_handler[i] = new $DDGNodeName(this, "getChild", Integer.valueOf(i));
+  $endif
+}
+state().addHandlerDepTo(getChild_handler[i]);
+$endif
+
+$if(IncrementalLevelAttr)
+state().addHandlerDepTo(getChild_handler);
+$endif
+
+$if(IncrementalLevelNode)
+if (child != null) {
+  state().addHandlerDepTo(child.handler);
+}
+$endif
+
+$if(IncrementalLevelRegion)
+$if(#isRegionRoot)
+if (state().IN_COMPUTATION > 0 && child != null) {
+  child.handler().addDependant(handler);
+}
+$endif
+$endif
+
+$endif
+]]
+
+ASTNode.incHookGetChildEnterEval = [[
+$if(IncrementalEnabled)
+
+$if(IncrementalLevelParam)
+state().enterAttrStoreEval(getChild_handler[i]);
+$endif
+
+$if(IncrementalLevelRegion)
+// TODO(emso): Add region enter getChild eval.
+$endif
+
+$endif
+]]
+
+ASTNode.incHookGetChildExitEval = [[
+$if(IncrementalEnabled)
+
+$if(IncrementalLevelParam)
+state().exitAttrStoreEval(getChild_handler[i]);
+$endif
+
+$if(IncrementalLevelRegion)
+// TODO(emso): Add region exit getChild eval.
+$endif
+
+$endif
+]]
+
 TokenComponent.incHookGetToken = [[
 $if(IncrementalEnabled)