lastSubnodeChange = System.currentTimeMillis();
registerSubnodeChange();
    protected void releaseNode(Node node) {        if (subnodes != null) {            subnodes.remove(node.getHandle());        }        lastSubnodeChange = System.currentTimeMillis();        // check if the subnode is in relational db and has a link back to this        // which needs to be unset        /*        if (dbmap != null) {            Relation srel = dbmap.getSubnodeRelation();        }        */        // check if subnodes are also accessed as properties. If so, also unset the property        if ((dbmap != null) && (node.dbmap != null)) {            Relation prel = dbmap.getPropertyRelation();            if ((prel != null) && (prel.accessName != null)) {                Relation localrel = node.dbmap.columnNameToRelation(prel.accessName);                // if no relation from db column to prop name is found, assume that both are equal                String propname = (localrel == null) ? prel.accessName : localrel.propName;                String prop = node.getString(propname);                if ((prop != null) && (getNode(prop) == node)) {                    unset(prop);                }            }        }        // If subnodes are relational no need to mark this node as modified        if (ignoreSubnodeChange()) {            return;        }        // Server.throwNodeEvent (new NodeEvent (node, NodeEvent.NODE_REMOVED));        // Server.throwNodeEvent (new NodeEvent (this, NodeEvent.SUBNODE_REMOVED, node));        lastmodified = System.currentTimeMillis();        // nmgr.logEvent ("released node "+node +" from "+this+"     oldobj = "+what);        if (state == CLEAN) {            markAs(MODIFIED);        }    }