                                     ;; My child throws focus, but there is no other component to take it.
                                     ;; So I take it temporarily and child will take back within the next step. (*2)
                                     ;; Latest movement direction is tracked to be used within the next step
-                                    (temporarily-taken-from-state this-focused-child :next)
+                                    (temporarily-taken-from-state component (str "next, reason: " child-id) this-focused-child :next)
                                     (focus-child-by-direction next-child :next))
                                   {:mode :throws-focus
                                    :throw-mode :next

(defn focus-child-by-direction [child-id dir]
  (assoc (focus-child child-id) :throw-mode dir))

(fg/defevolverfn :focus-state
  (let [reason (fg/get-reason)
        this-focused-child (:focused-child old-focus-state)
        this-mode (:mode old-focus-state)
        parent-focus-state (get-property [] :focus-state)
        parent-focused-child (:focused-child parent-focus-state)
        parent-mode (:mode parent-focus-state)]

                                    ;; My child throws focus, but there is no other component to take it.
                                    ;; So I take it temporarily and child will take back within the next step. (*2)
                                    ;; Latest movement direction is tracked to be used within the next step
                                    (temporarily-taken-from-state component (str "prev, reason: " child-id) this-focused-child :prev)
                                    (focus-child-by-direction prev-child :prev))
                                  {:mode :throws-focus
                                   :throw-mode :prev
