docs: @Override
      protected void updateInterruptListener(Pin pin) {
  
          // enable or disable single static listener with the native impl
          if (listeners.size() > 0) {
  
              // ------------------------
              // DIGITAL INPUT PINS
              // ------------------------
  
              // setup interrupt listener native thread and enable callbacks
              if (!com.pi4j.wiringpi.GpioInterrupt.hasListener(this)) {
                  com.pi4j.wiringpi.GpioInterrupt.addListener(this);
              }
  
              // only configure WiringPi interrupts for digital input pins
              if(pinModeCache[pin.getAddress()] == PinMode.DIGITAL_INPUT) {
  
                  // enable or disable the individual pin listener
                  if(listeners.containsKey(pin) && listeners.get(pin).size() > 0) {
                      // enable interrupt listener for this pin
                      com.pi4j.wiringpi.GpioInterrupt.enablePinStateChangeCallback(pin.getAddress());
                  }
                  else {
                      // disable interrupt listener for this pin
                      com.pi4j.wiringpi.GpioInterrupt.disablePinStateChangeCallback(pin.getAddress());
                  }
              }
  
              // ------------------------
              // ANALOG INPUT PINS
              // ------------------------
  
              // setup analog input monitor/listener native thread and enable callbacks
              if (!com.pi4j.jni.AnalogInputMonitor.hasListener(this)) {
                  com.pi4j.jni.AnalogInputMonitor.addListener(this);
              }
  
              // configure analog monitor for analog input pins
              if(pinModeCache[pin.getAddress()] == PinMode.ANALOG_INPUT) {
                  // we need to re-address the pin for Odroid boards (analog_address = assigned_pin_address - AIN_ADDRESS_OFFSET)
                  int analogPinAddress = pin.getAddress() - AIN_ADDRESS_OFFSET;
  
                  // enable or disable the individual pin listener
                  if(listeners.containsKey(pin) && listeners.get(pin).size() > 0) {
                      // enable interrupt listener for this pin
                      com.pi4j.jni.AnalogInputMonitor.enablePinValueChangeCallback(analogPinAddress,
                                                                                   analogInputPollingRate,
                                                                                   analogInputListenerChangeThreshold);
                  }
                  else {
                      // disable interrupt listener for this pin
                      com.pi4j.jni.AnalogInputMonitor.disablePinValueChangeCallback(analogPinAddress);
                  }
              }
          }
          else {
              // ------------------------
              // DIGITAL INPUT PINS
              // ------------------------
  
              // disable interrupt listener for this pins
              com.pi4j.wiringpi.GpioInterrupt.disablePinStateChangeCallback(pin.getAddress());
  
              // remove interrupt listener, disable native thread and callbacks
              if (com.pi4j.wiringpi.GpioInterrupt.hasListener(this)) {
                  com.pi4j.wiringpi.GpioInterrupt.removeListener(this);
              }
  
              // ------------------------
              // ANALOG INPUT PINS
              // ------------------------
  
              // we need to re-address the pin for Odroid boards (analog_address = assigned_pin_address - AIN_ADDRESS_OFFSET)
              int analogPinAddress = pin.getAddress() - AIN_ADDRESS_OFFSET;
  
              // disable analog input monitor/listener for this pins
              com.pi4j.jni.AnalogInputMonitor.disablePinValueChangeCallback(analogPinAddress);
  
              // remove analog input monitor/listener, disable native thread and callbacks
              if (com.pi4j.jni.AnalogInputMonitor.hasListener(this)) {
                  com.pi4j.jni.AnalogInputMonitor.removeListener(this);
              }
          }
      }