                has-changes (or prev-has-changes new-has-changes)
                with-evolved-target (assoc with-evolved-target-fresh :has-changes has-changes)
                new-aux (:aux-container with-evolved-target)
-               ;_ (if (= [:main :app-panel :hello] target-id-path)
-               ;    (println " JUST EVOLVED target-id-path " target-id-path
-               ;      " new-has-changes " new-has-changes
-               ;      " init " initialization
-               ;      " props " (:position-matrix (get-in new-aux (fgc/conjv k :latest-changed-properties)))
-               ;      " val " (get-in container (fgc/conjv k :position-matrix))
-               ;      ))
+              ; _ (if (and
+              ;         (= [:main :hello] target-id-path)
+              ;         (get-in new-aux (fgc/conjv k :latest-changed-properties))
+              ;         ((get-in new-aux (fgc/conjv k :latest-changed-properties)) :position-bound))
+              ;     (println " JUST EVOLVED target-id-path " target-id-path
+              ;       " new-has-changes " new-has-changes
+              ;       " init " initialization
+              ;       (if (:position-bound (get-in new-aux (fgc/conjv k :latest-changed-properties)))
+              ;                               ((get-in new-aux (fgc/conjv k :latest-changed-properties)) :position-bound))
+              ;       " position-bound " (get-in container (fgc/conjv k :position-bound)) "->" (get-in with-evolved-target (fgc/conjv k :position-bound))
+              ;       ))
                ]
               ;@todo Without this initialization check :children for table content pane do not get evolved on initialization. Why?
               (if (or new-has-changes (and initialization has-changes))
-                (let [ all-out-dependents (:out-dependents new-aux)
-                       changed-properties (get-in new-aux (fgc/conjv k :latest-changed-properties))
-                       properties (if changed-properties (vec (seq (filter changed-properties (for [[k v] all-out-dependents] k)))) [])
-                       container-id (:id with-evolved-target)]
+                (let [all-out-dependents (:out-dependents new-aux)
+                      changed-properties (get-in new-aux (fgc/conjv k :latest-changed-properties))
+                      properties (if changed-properties (vec (seq (filter changed-properties (for [[k v] all-out-dependents] k)))) [])
+                      container-id (:id with-evolved-target)]
                   (loop [ pi (dec (count properties))
                           ret with-evolved-target]
                     (if (>= pi 0)

(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 [ 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 #{}))

  (let [
         ;@todo Experiment1
         ;targret-access-key (fgc/get-access-key target-id-path)
        ;targret-visible-access-key (fgc/conjv targret-access-key :visible)

        ; TODO October 12, 2015 initialization check should not be needed since  remove the following comment, but Review Experiment1 for regular evolving
         ;properties (if initialization
         ;             (let [ target-properties-already-evovled (fgc/get-evolved-properties container targret-access-key)
         ;                    to-evolve (if target-properties-already-evovled
         ;                                (vec (remove target-properties-already-evovled (:properties dependents)))
         ;                                (:properties dependents))]
         ;               (if (empty? to-evolve) nil to-evolve))
         ;
         ;             ;
         ;             ;@todo Experiment1. Have some :_parameter in :content-pane that tells this is allowed. Not allowed by default
         ;             ;
         ;             ;
         ;             ;(if (get-in container targret-visible-access-key)
         ;             ;  (:properties dependents)
         ;             ;  (do ;(println " Limiting properties for " target-id-path " because it is not visible")
         ;             ;    (if (some #(= :visible %1) (:properties dependents)) (:properties dependents)))
         ;             ;  )
         ;             ;
         ;             ; It causes bugs with cell :visible :achor :selection when grouping/ungrouping and when
         ;             ; selecting a row and then scrolling down
         ;             ;
         ;             (:properties dependents)
         ;
         ;             )
        properties (:properties dependents)
        ;_ (if (= [:main :hello] target-id-path) (println "ev-out" properties))

         dependent-children1 (:children dependents)

