code: @SuppressWarnings("unlikely-arg-type")
      public boolean unsubscribe(IProvider provider) {
          if (providers.remove(provider)) {
              fireProviderConnectionEvent(provider, PipeConnectionEvent.EventType.PROVIDER_DISCONNECT, null);
              listeners.remove(provider);
              return true;
          }
          return false;
      }
docs: Disconnects provider from this pipe. Fires pipe connection event.
  
  @param provider
  Provider that should be removed
  @return true on success, false otherwise