docs: public static void main(String[] args) throws InterruptedException, PlatformAlreadyAssignedException {
  
          // ####################################################################
          //
          // since we are not using the default Raspberry Pi platform, we should
          // explicitly assign the platform as the OrangePi platform.
          //
          // ####################################################################
          PlatformManager.setPlatform(Platform.ORANGEPI);
  
          // create Pi4J console wrapper/helper
          // (This is a utility class to abstract some of the boilerplate code)
          final Console console = new Console();
  
          // print program title/header
          console.title("<-- The Pi4J Project -->", "GPIO Input Example");
  
          // allow for user to exit program using CTRL-C
          console.promptForExit();
  
          // create gpio controller
          final GpioController gpio = GpioFactory.getInstance();
  
          // ####################################################################
          //
          // When provisioning a pin, use the OrangePiPin class.
          //
          // ####################################################################
  
          // by default we will use gpio pin #01; however, if an argument
          // has been provided, then lookup the pin by address
          Pin pin = CommandArgumentParser.getPin(
                  OrangePiPin.class,    // pin provider class to obtain pin instance from
                  OrangePiPin.GPIO_01,  // default pin if no pin argument found
                  args);                 // argument array to search in
  
          // by default we will use gpio pin PULL-UP; however, if an argument
          // has been provided, then use the specified pull resistance
          PinPullResistance pull = CommandArgumentParser.getPinPullResistance(
                  PinPullResistance.PULL_UP,  // default pin pull resistance if no pull argument found
                  args);                      // argument array to search in
  
          // provision gpio pin as an input pin
          final GpioPinDigitalInput input = gpio.provisionDigitalInputPin(pin, "MyInput", pull);
  
          // set shutdown state for this pin: unexport the pin
          input.setShutdownOptions(true);
  
          // prompt user that we are ready
          console.println("Successfully provisioned [" + pin + "] with PULL resistance = [" + pull + "]");
          console.emptyLine();
          console.box("The GPIO input pin states will be displayed below.");
          console.emptyLine();
  
          // display pin state
          console.emptyLine();
          console.println(" [" + input.toString() + "] digital state is: " + ConsoleColor.conditional(
                  input.getState().isHigh(), // conditional expression
                  ConsoleColor.GREEN,        // positive conditional color
                  ConsoleColor.RED,          // negative conditional color
                  input.getState()));
          console.emptyLine();
  
          // stop all GPIO activity/threads by shutting down the GPIO controller
          // (this method will forcefully shutdown all GPIO monitoring threads and scheduled tasks)
          gpio.shutdown();
      }