code: private void internalRelease() {
  
          // try {
  
          // setKey(null);
  
          // getNotifier().unlistenAll(getWaveReady());
  
          callAnnotatedMethod(OnRelease.class);
  
          if (localFacade() != null) {
              localFacade().unregister(key());
          }
  
          // thisObject.ready = false;
  
          // Shall also release all InnerComponent
          if (getInnerComponentMap().isPresent()) {
  
              final List<Component<?>> toRemove = new ArrayList<>();
              for (final Component<?> innerComponent : getInnerComponentMap().get().values()) {
  
                  // Release the InnerComponent
                  innerComponent.release();
  
                  // Store it to avoid co-modification error
                  toRemove.add(innerComponent);
              }
  
              for (final Component<?> innerComponent : toRemove) {
  
                  // Remove it from the list
                  // getInnerComponentList().get().remove(innerComponent);
  
                  // Then remove it from map
                  getInnerComponentMap().get().remove(innerComponent.key());
              }
          }
  
          // } catch (final JRebirthThreadException jte) {
          // LOGGER.error(COMPONENT_RELEASE_ERROR, jte);
          // }
  
      }
docs: Perform the internal release.