code: public void addChildProperties(NodeData parent, QPathEntryFilter pattern, List<PropertyData> childs)
     {
        boolean inTransaction = cache.isTransactionActive();
        try
        {
           if (!inTransaction)
           {
              cache.beginTransaction();
           }
           cache.setLocal(true);
           if (childs.size() > 0)
           {
              // add all new
              Set<String> set = new HashSet<String>();
              for (PropertyData child : childs)
              {
                 putProperty(child, ModifyChildOption.NOT_MODIFY);
                 set.add(child.getIdentifier());
              }
  
              CachePatternPropsId cacheId = new CachePatternPropsId(getOwnerId(), parent.getIdentifier());
              Map<QPathEntryFilter, Set<String>> patterns = (Map<QPathEntryFilter, Set<String>>)cache.get(cacheId);
              if (patterns == null)
              {
                 patterns = new HashMap<QPathEntryFilter, Set<String>>();
              }
              patterns.put(pattern, set);
              cache.put(cacheId, patterns);
           }
        }
        finally
        {
           cache.setLocal(false);
           if (!inTransaction)
           {
              dedicatedTxCommit();
           }
        }
     }
docs: {@inheritDoc}