@Override
 protected void finalize() throws Throwable {
   if (!destroyed) destroy();
   super.finalize();
 }