code: @Override
      public <E extends R> void unregister(final UniqueKey<E> uniqueKey) {
  
          synchronized (this.componentMap) {
  
              // Try to grab the object we want to unregister
              final List<E> readyObjectList = getReadyObjectList(uniqueKey);
  
              for (final E readyObject : readyObjectList) {
  
                  // Unlisten all previously listened WaveType
                  if (readyObject instanceof Component<?>) {
                      try {
                          globalFacade().notifier().unlistenAll((Component<?>) readyObject);
                      } catch (final JRebirthThreadException e) {
                          LOGGER.error(UNLISTEN_ALL_ERROR, readyObject.getClass().getSimpleName(), e);
                      }
                  }
  
                  // Release the key
                  readyObject.key(null);
  
                  // Release the facade link
                  readyObject.localFacade(null);
              }
  
              // Remove the component from the singleton map
              this.componentMap.remove(uniqueKey);
          }
  
      }
docs: {@inheritDoc}