PagePartSelectionTracker::~PagePartSelectionTracker()
{
    IWorkbenchPage::Pointer page = GetPage();
    page->GetWorkbenchWindow()->RemovePerspectiveListener(perspListener.data());
    page->RemovePartListener(partListener.data());
    this->SetPart(IWorkbenchPart::Pointer(nullptr), false);
    this->SetPage(nullptr);
}