always work with a clone of the live list when checking transaction
shortcuts bite back. the codes makes several lists with items from the
checked list and this may mess with the "get-copy-modify-set" actions
when some item in the working list needs to be changed
instead, make a clone (new list, cloned items; except if the input list
is not the live one, i.e. it is a working copy already) and freely
modify its items directly
if the "always clone" approach gets slow, this whole process may be
moved to a thread
also, note focus has moved when a item above the focused item is removed