public synchronized void hideNode( final Node hideNode, final Node focusNode ) {

        if (hideNode==null || focusNode==null) return;

        new Thread() {

            public void run() {

                synchronized(LocalityUtils.this) {

                    if (!locality.getCompleteEltSet().contains(hideNode) ||

                        !locality.getCompleteEltSet().contains(focusNode)) return;                        

                    locality.removeNode(hideNode); //Necessary so that node is ignored in distances calculation.

                    Hashtable distHash = locality.calculateDistances(focusNode,20);

                    markDistantNodes(distHash);  

                    try {

                        locality.addNodeWithEdges(hideNode); //Once distances are calculated, we can add the node back

                        if (hideNode!=focusNode) hideNode.markedForRemoval = true;

                    } catch ( TGException tge ) {

                        System.err.println("TGException in LocalityUtils.hideNode(): " + tge.getMessage());

                    }

                

                    tgPanel.repaint();

                    try { Thread.currentThread().sleep(200); } 

                    catch (InterruptedException ex) {}         

                    removeMarkedNodes();

                    tgPanel.resetDamper();

                }

            }

        }.start();

    }