code: function () {
          if(this.events) {
              if(this.eventListeners) {
                  this.events.un(this.eventListeners);
              }
              this.events.destroy();
              this.events = null;
          }
          this.eventListeners = null;
  
          // eliminate circular references
          if (this.handler) {
              this.handler.destroy();
              this.handler = null;
          }
          if(this.handlers) {
              for(var key in this.handlers) {
                  if(this.handlers.hasOwnProperty(key) &&
                     typeof this.handlers[key].destroy == "function") {
                      this.handlers[key].destroy();
                  }
              }
              this.handlers = null;
          }
          if (this.map) {
              this.map.removeControl(this);
              this.map = null;
          }
          this.div = null;
      }
docs: Method: destroy
  The destroy method is used to perform any clean up before the control
  is dereferenced.  Typically this is where event listeners are removed
  to prevent memory leaks.