code: @SuppressWarnings("unchecked")
      @Override
      public void setup() throws CoreException {
  
          final boolean canProcessAnnotation = ComponentEnhancer.canProcessAnnotation((Class<? extends Component<?>>) this.getClass());
          if (canProcessAnnotation) {
  
              // Search Singleton and Multiton annotation on field
              ComponentEnhancer.injectComponent(this);
  
              // Attach custom method configured with custom Lifecycle annotation
              this.lifecycleMethod = ComponentEnhancer.defineLifecycleMethod(this);
  
              // Search OnWave annotation to manage auto wave handler setup
              ComponentEnhancer.manageOnWaveAnnotation(this);
  
          }
  
          callAnnotatedMethod(BeforeInit.class);
  
          manageOptionalData();
  
          if (canProcessAnnotation) {
              ComponentEnhancer.injectInnerComponent(this);
          }
  
          // Initialize all inner components
          initInternalInnerComponents();
  
          // Prepare the current component
          ready();
  
          callAnnotatedMethod(AfterInit.class);
      }
docs: {@inheritDoc}