code: public Collection<ItemState> getLastModifyStates(NodeData rootData)
     {
        HashMap<String, ItemState> changes = new HashMap<String, ItemState>();
  
        for (int i = 0; i < items.size(); i++)
        {
           ItemData item = items.get(i).getData();
           if (item.getIdentifier().equals(rootData.getIdentifier()))
           {
              // the node
              if (items.get(i).isAdded())
              {
                 // if a new item - no modify changes can be
                 return new ArrayList<ItemState>();
              }
  
              if (!items.get(i).isDeleted())
              {
                 changes.put(item.getIdentifier(), items.get(i));
              }
           }
           else if (item.getParentIdentifier().equals(rootData.getIdentifier()))
           {
              // childs
              changes.put(item.getIdentifier(), items.get(i));
           }
        }
  
        return changes.values();
     }
docs: Collect last in ChangesLog order node (and direct childs) changes.
  
  @param rootData
  - a item root of the changes scan
  @return this item (!) and child items last modify states (i.e. updates, not adds or deletes)