code: public void resetHard() {
        for( int i = 0; i < usedEdges.size(); i++ ) {
           Edge<N,E> e = usedEdges.get(i);
           e.data = null;
           e.dest = null;
        }
  
        for( int i = 0; i < usedNodes.size(); i++ ) {
           Node<N,E> n = usedNodes.get(i);
           n.data = null;
           n.edges.reset();
        }
  
        unusedEdges.addAll(usedEdges);
        unusedNodes.addAll(usedNodes);
  
        usedEdges.clear();
        usedNodes.clear();
     }
docs: Takes all the used nodes and makes them unused.  Also dereferences any objects saved in 'data'.