class StartupSmartLifecycle implements SmartLifecycle, ApplicationContextAware {

    public static final String             ROOT_MODULE_NAME = "ROOT_APPLICATION_CONTEXT";

    private final StartupReporter          startupReporter;

    private ConfigurableApplicationContext applicationContext;

    public StartupSmartLifecycle(StartupReporter startupReporter) {
        this.startupReporter = startupReporter;
    }

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.applicationContext = (ConfigurableApplicationContext) applicationContext;
    }

    @Override
    public void start() {<FILL_FUNCTION_BODY>}

    @Override
    public void stop() {

    }

    @Override
    public boolean isRunning() {
        return false;
    }

    @Override
    public int getPhase() {
        return Integer.MIN_VALUE;
    }
}

        // init ContextRefreshStageStat
        ChildrenStat<ModuleStat> stat = new ChildrenStat<>();
        stat.setName(APPLICATION_CONTEXT_REFRESH_STAGE);
        stat.setEndTime(System.currentTimeMillis());

        // build root ModuleStat
        ModuleStat rootModuleStat = new ModuleStat();
        rootModuleStat.setName(ROOT_MODULE_NAME);
        rootModuleStat.setEndTime(stat.getEndTime());
        rootModuleStat.setThreadName(Thread.currentThread().getName());

        // getBeanStatList from ApplicationStartup
        rootModuleStat.setChildren(startupReporter.generateBeanStats(applicationContext));

        // report ContextRefreshStageStat
        stat.addChild(rootModuleStat);
        startupReporter.addCommonStartupStat(stat);
    
<no_super_class>