@Override
 public <T extends EventListener> void addListener(T t) {
   if (!isStarting()) throw new IllegalStateException();
   if (!_enabled) throw new UnsupportedOperationException();
   super.addListener(t);
   ListenerHolder holder = getServletHandler().newListenerHolder(Source.JAVAX_API);
   holder.setListener(t);
   getServletHandler().addListener(holder);
 }
 @Override
 public IGPIOPinInputListener addingService(ServiceReference<IGPIOPinInputListener> reference) {
   // get service
   IGPIOPinInputListener gPIOInputListener = context.getService(reference);
   if (gPIOInputListener == null) return null;
   // Get pinId
   Integer pinId = IGPIOPin.Util.getPinId(reference);
   if (pinId == null) pinId = new Integer(IGPIOPin.DEFAULT_INPUT_PIN);
   Pin pin = Pi4jGPIOPin.getPinForId(pinId.intValue());
   if (pin != null) {
     // Get pinName
     String pinName = IGPIOPin.Util.getPinName(reference);
     if (pinName == null) pinName = String.valueOf(pinId);
     // Get pullresistance
     Integer pullResistance = IGPIOPin.Util.getInputPullResistance(reference);
     // If it's not set, set to PUL
     if (pullResistance == null)
       pullResistance = new Integer(IGPIOPin.PIN_DEFAULTINPUTPULLRESISTANCE);
     PinPullResistance pr = Pi4jGPIOPin.getPinPullResistance(pullResistance.intValue());
     if (pr == null) pr = PinPullResistance.PULL_DOWN;
     // Get controller GPIO
     synchronized (refToListenerMap) {
       // Find reference
       ListenerHolder listenerHolder = refToListenerMap.get(reference);
       GpioPinDigitalInput inputListener = null;
       // We've not seen this request before
       if (listenerHolder == null) {
         inputListener = Activator.getGPIOController().provisionDigitalInputPin(pin, pinName, pr);
         listenerHolder = new ListenerHolder(inputListener);
       } else
         // We've seen it before so we use the old inputListener
         inputListener = listenerHolder.inputListener;
       // create new Pi4jGPIOPinInputListener
       Pi4jGPIOPinInputListener listener =
           new Pi4jGPIOPinInputListener(inputListener, gPIOInputListener);
       // set on the listener holder
       listenerHolder.setListener(listener);
       // put into map
       refToListenerMap.put(reference, listenerHolder);
     }
   } else {
     System.err.println(
         "adding IGPIOPinInputListener service...pinId is not available for pinId=" + pinId);
   }
   return gPIOInputListener;
 }