public void unsubscribe() { FunDoc.this.listener = null; }
	protected void registerUpdateListener() {        if (listener == null) {            listener = new UpdateListener() {                public void documentUpdated(DocumentImpl document, int event) {                    if (document == null || event == UpdateListener.ADD || event == UpdateListener.REMOVE) {                        // clear all                        cachedPath = null;                        cached = null;                    } else {                        if (cachedPath != null && (document == null || cachedPath.equals(document.getURI()))) {                            cached = null;                            cachedPath = null;                        }                    }                }                public void nodeMoved(NodeId oldNodeId, StoredNode newNode) {                    // not relevant                }                public void debug() {                	LOG.debug("UpdateListener: Line: " + getASTNode().getLine() + ": " + FunDoc.this.toString());                	                }            };            context.registerUpdateListener(listener);        }	}