nmgr.evictKey(node.getKey());
if (create) { nmgr.registerNode(node); } else { nmgr.evictKey(node.getKey()); }
    protected Node getGroupbySubnode(String sid, boolean create) {        if (sid == null) {            throw new IllegalArgumentException("Can't create group by null");        }        if (state == TRANSIENT) {            throw new RuntimeException("Can't add grouped child on transient node. "+                                       "Make parent persistent before adding grouped nodes.");        }        loadNodes();        if (subnodes == null) {            subnodes = new ExternalizableVector();        }        if (create || subnodes.contains(new NodeHandle(new SyntheticKey(getKey(), sid)))) {            try {                DbMapping groupbyMapping = dbmap.getGroupbyMapping();                boolean relational = groupbyMapping.getSubnodeMapping().isRelational();                if (relational || create) {                    Node node = relational ? new Node(this, sid, nmgr, null)                                           : new Node(sid, null, nmgr);                    // set "groupname" property to value of groupby field                    node.setString("groupname", sid);                    node.setDbMapping(groupbyMapping);                    if (!relational) {                        setNode(sid, node);                        subnodes.add(node.getHandle());                    }                    node.setPrototype(groupbyMapping.getTypeName());                    nmgr.evictKey(node.getKey());                    return node;                }            } catch (Exception noluck) {                nmgr.logEvent("Error creating group-by node for " + sid + ": " + noluck);                noluck.printStackTrace();            }        }        return null;    }