code: public void remove(final ItemData item)
     {
        if (enabled && item != null)
        {
           if (LOG.isDebugEnabled())
           {
              LOG.debug(name + ", remove() " + item.getQPath().getAsString() + " " + item.getIdentifier());
           }
  
           writeLock.lock();
           try
           {
              final String itemId = item.getIdentifier();
  
              removeItem(item);
  
              if (item.isNode())
              {
                 // removing childs of the node
                 nodesCache.remove(itemId);
                 propertiesCache.remove(itemId);
  
                 // removing child from the node's parent child nodes list
                 removeChildNode(item.getParentIdentifier(), itemId);
              }
              else
              {
                 removeChildProperty(item.getParentIdentifier(), itemId);
              }
           }
           catch (Exception e)
           {
              LOG.error(name + ", Error remove item data from cache: " + item.getQPath().getAsString(), e);
           }
           finally
           {
              writeLock.unlock();
           }
        }
     }
docs: Removes data and its children in cache.<br>
  Implementation details<br>
  Remove Item from cache C, for Node removes lists in CN and CP (only lists).<br>
  Remove Item from parent's child lists (CN for Node, CP for Property). NOTE: if CN or CP of the
  Item parent are iterrating now ConcurrentModificationException will occurs there. NOTE #2: used
  from onSaveItems().
  
  @param item