docs: @Override
      public synchronized void shutdown()
      {
          // prevent reentrant invocation
          if(isShutdown())
              return;
  
          // create a temporary set of providers to shutdown after completing all the pin instance shutdowns
          Set<GpioProvider> gpioProvidersToShutdown = new HashSet<>();
  
          // shutdown explicit configured GPIO pins
          for (GpioPin pin : pins) {
  
              // add each GPIO provider to the shutdown set
              if(!gpioProvidersToShutdown.contains(pin.getProvider())){
                  gpioProvidersToShutdown.add(pin.getProvider());
              }
  
              // perform the shutdown options if configured for the pin
              GpioPinShutdown shutdownOptions = pin.getShutdownOptions();
              if (shutdownOptions != null) {
                  // get shutdown option configuration
                  PinState state = shutdownOptions.getState();
                  PinMode mode = shutdownOptions.getMode();
                  PinPullResistance resistance = shutdownOptions.getPullResistor();
                  Boolean unexport = shutdownOptions.getUnexport();
  
                  // perform shutdown actions
                  if ((state != null) && pin.isMode(PinMode.DIGITAL_OUTPUT)) {
                      ((GpioPinDigitalOutput)pin).setState(state);
                  }
                  if (resistance != null) {
                      pin.setPullResistance(resistance);
                  }
                  if (mode != null) {
                      pin.setMode(mode);
                  }
                  if (unexport != null && unexport == Boolean.TRUE) {
                      pin.unexport();
                  }
              }
          }
  
          // perform a shutdown on each GPIO provider
          for(GpioProvider gpioProvider : gpioProvidersToShutdown){
              if(!gpioProvider.isShutdown()){
                  gpioProvider.shutdown();
              }
          }
  
          // shutdown all executor services
          //
          // NOTE: we are not permitted to access the shutdown() method of the individual
          // executor services, we must perform the shutdown with the factory
          GpioFactory.getExecutorServiceFactory().shutdown();
  
          // set is shutdown tracking variable
          isshutdown = true;
      }