docs: public static void main(String args[]) throws InterruptedException {
  
          System.out.println("<--Pi4J--> GPIO interrupt test program");
  
          // setup wiringPi
          if (Gpio.wiringPiSetup() == -1) {
              System.out.println(" ==>> GPIO SETUP FAILED");
              return;
          }
  
          // configure pins as input pins
          Gpio.pinMode(0, Gpio.INPUT) ;
          Gpio.pinMode(1, Gpio.INPUT) ;
          Gpio.pinMode(2, Gpio.INPUT) ;
  
          // configure pins with pull down resistance
          Gpio.pullUpDnControl(0, Gpio.PUD_DOWN);
          Gpio.pullUpDnControl(1, Gpio.PUD_DOWN);
          Gpio.pullUpDnControl(2, Gpio.PUD_DOWN);
  
          // setup a pin interrupt callback for each pin
          //
          // NOTE: YOU CANNOT SETUP SEPARATE ISRs FOR RISING AND FALLING,
          // EACH GPIO PIN CAN ONLY BE CONFIGURED WITH A SINGLE EDGE TYPE AT ANY GIVEN TIME.
          // YOU CAN USE THE 'INT_EDGE_BOTH' IF YOU WISH TO CATCH BOTH CASES IN A SINGLE CALLBACK.
          //
  
          // example: single callback for discrete FALLING edge for pin 0
          Gpio.wiringPiISR(0, Gpio.INT_EDGE_FALLING, new GpioInterruptCallback() {
              @Override
              public void callback(int pin) {
                  System.out.println(" ==>> GPIO PIN " + pin + " - INTERRUPT DETECTED <FALLING>");
              }
          });
  
          // example: single callback for both RISING and FALLING edges for pin 1
          Gpio.wiringPiISR(1, Gpio.INT_EDGE_BOTH, new GpioInterruptCallback() {
              @Override
              public void callback(int pin) {
                  System.out.println(" ==>> GPIO PIN " + pin + " - INTERRUPT DETECTED <RISING|FALLING>");
              }
          });
  
          // here is another approach using a custom callback class/instance instead of an anonymous method
          SampleCallbackClass risingCallbackInstance = new SampleCallbackClass("RISING");
  
          // setup a pin interrupt callbacks for pin 2
          Gpio.wiringPiISR(2, Gpio.INT_EDGE_RISING, risingCallbackInstance);
  
          // wait for user to exit program
          System.console().readLine("Press <ENTER> to exit program.\r\n");
      }