private HashSet<SearchNode> constructDeletedList() {
        HashSet<SearchNode> deletedList = new HashSet<SearchNode>();
        HashSet<SearchNode> tempList = new HashSet<SearchNode>();
        
        // First process all the nodes starting from the ones within open list
        for (SearchNode openNode : m_openList) {
            // Traverse all the way up to the current start or old start
            // Condition in WHILE: parent != null (Old Start)
            // Condition within WHILE: parent != currentStart => TERMINATE/CONTINUE
            tempList.clear();
            SearchNode leaf = openNode;
            boolean next = true;
            while (leaf != null && !leaf.equals(sNode_oldStart) && next) {
                tempList.add(leaf);
                leaf = leaf.getParent();
                if (leaf == null || leaf.equals(sNode_currentStart)) {
                    tempList.clear();
                    next = false;
                }
            }
            deletedList.addAll(tempList); // Append the nodes to Deleted List
        }
        
        // Now process all the ones between old start and current start(excluding).
        SearchNode leaf = sNode_currentStart.getParent();
        tempList.clear();
        while (leaf != null && !leaf.equals(sNode_oldStart)) { // BEGIN WHILE leaf is not null
            tempList.add(leaf);
            leaf = leaf.getParent();
        } // END WHILE leaf is not null
        deletedList.addAll(tempList); // Append the nodes to Deleted List
        
        deletedList.add(sNode_oldStart);
        deletedList.remove(sNode_currentStart);
        
        System.out.println("MTDSL: Deleted list generated."); // REMOVE SOP
        return deletedList;
    }