if (p != null && p.type == Property.NODE)
if (p != null && p.getType() == Property.NODE)
    protected void deepRemoveNode () {	// notify nodes that link to this node being deleted.	int l = links == null ? 0 : links.size ();	for (int i = 0; i < l; i++) {	    NodeHandle lhandle = (NodeHandle) links.get (i);	    Node link = lhandle.getNode (nmgr);	    if (link != null)	        link.releaseNode (this);	}	// tell all nodes that are properties of n that they are no longer used as such	if (propMap != null) {	    for (Enumeration e2 = propMap.elements (); e2.hasMoreElements (); ) {	        Property p = (Property) e2.nextElement ();	        if (p != null && p.type == Property.NODE)	            p.unregisterNode ();	    }	}	// cascading delete of all subnodes. This is never done for relational subnodes, because	// the parent info is not 100% accurate for them.	if (subnodes != null) {	    Vector v = new Vector ();	    // remove modifies the Vector we are enumerating, so we are extra careful.	    for (Enumeration e3 = getSubnodes (); e3.hasMoreElements(); ) {	        v.add (e3.nextElement());	    }	    int m = v.size ();	    for (int i=0; i<m; i++) {	        // getParent() is heuristical/implicit for relational nodes, so we don't base	        // a cascading delete on that criterium for relational nodes.	        Node n = (Node) v.get (i);	        if (!n.isRelational())	            removeNode (n);	    }	}	// mark the node as deleted	setParent (null);	markAs (DELETED);    }