// Undoable Interface
  @Override
  public void redo() {
    JoeTree tree = parent.getTree();

    // Remove node from visible nodes cache
    tree.removeNode(oldNode);

    // Swap the nodes
    parent.removeChild(oldNode, index);

    if (newNode != null) {
      parent.insertChild(newNode, index);

      // Insert the node into the visible nodes cache
      tree.insertNode(newNode);

      // Handle Selection
      tree.addNodeToSelection(newNode);
    }
  }