code: private void removeProperty(ItemState item, int indexItem)
     {
        if (indexItem == -1)
        {
           items.remove(item);
        }
        else
        {
           items.remove(indexItem);
        }
        index.remove(item.getData().getIdentifier());
        index.remove(item.getData().getQPath());
        index.remove(new ParentIDQPathBasedKey(item));
        index.remove(new IDStateBasedKey(item.getData().getIdentifier(), item.getState()));
        lastChildPropertyStates.remove(item.getData().getIdentifier());
        childPropertyStates.remove(item.getData().getIdentifier());
  
        Map<String, ItemState> children = lastChildPropertyStates.get(item.getData().getParentIdentifier());
        if (children != null)
        {
           children.remove(item.getData().getIdentifier());
           if (children.isEmpty())
           {
              lastChildPropertyStates.remove(item.getData().getParentIdentifier());
           }
        }
  
        List<ItemState> listItemStates = childPropertyStates.get(item.getData().getParentIdentifier());
        if (listItemStates != null)
        {
           listItemStates.remove(item);
           if (listItemStates.isEmpty())
           {
              childPropertyStates.remove(item.getData().getParentIdentifier());
           }
        }
     }
docs: Removes the property from the log
  
  @param item
  ItemState