                  child-id (first child-pair)
                  child-component (second child-pair)]
             (recur
-              (evolve-all ret (fgc/conjv target-id-path child-id) child-component)
+              (evolve-all ret (fgc/conjv target-id-path child-id) child-component properties)
               (next children)))
           ret))))
-  ([root-container] (evolve-all root-container [(:id root-container)] root-container)))
+  ([root-container] (evolve-all root-container [(:id root-container)] root-container nil)))
 
 (declare initialize-internal)
 

  ([root-container target-id-path] (evolve-all-component-only root-container target-id-path nil)))

(defn- evolve-all
  ([root-container target-id-path component]
    (let [ fresh-root-container (evolve-all-component-only root-container target-id-path)]
      (loop [ ret fresh-root-container
              children (seq (:children component))]
        (if children

(defn evolve-component [original-container container original-target-id-path target-id-path reason properties-to-evolve debug-shift initialization]
  (let [ k (fgc/get-access-key target-id-path)
         pre-target-component (get-in container k)]
    ;; Absence of :path-to-target means that target is a newly created component that has
    ;; not passed container initialization yet and hence cannot be evolved yet
    (if (and pre-target-component (:path-to-target pre-target-component))
      (let [;; During initialization, if a property appears among :evolved-properties then:
            ;; - it is aready initialized, i.e. transitioned from nil to explicitly specified initial value
            ;; - it is not necessarily entirely initialized and may be updated because of the dependencies being initialized
            evolved-properties-key (fgc/conjv k :evolved-properties)
             changed-properties-key (fgc/conjv k :changed-properties)
             latest-changed-properties-key (fgc/conjv k :latest-changed-properties)
             aux-container (update-in! (:aux-container container) latest-changed-properties-key (transient #{}))
