abstract contract DestroyLockable is Ownable {
    bool public isDestroyDisabled = false;

    // Irreversible.
    function disableDestroy() public onlyOwner {
        isDestroyDisabled = true;
    }

    // In case there's a really bad mistake, but eventually disabled
    function destroy() public onlyOwner {
        require(!isDestroyDisabled, "Disabled");
        selfdestruct(payable(owner()));
    }

}
function destroy() public onlyOwner {
    require(!isDestroyDisabled, "Disabled");
    selfdestruct(payable(owner()));
}

// In case there's a really bad mistake, but eventually disabled