class DtpBaseBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {

    private static final String APPLICATION_CONTEXT_HOLDER = "dtpApplicationContextHolder";

    private static final String HASHED_WHEEL_TIMER = "dtpHashedWheelTimer";

    private static final String DTP_POST_PROCESSOR = "dtpPostProcessor";

    @Override
    public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {<FILL_FUNCTION_BODY>}

    private void registerHashedWheelTimer(BeanDefinitionRegistry registry) {
        Object[] constructorArgs = new Object[] {
                new NamedThreadFactory("dtp-runnable-timeout", true),
                10,
                TimeUnit.MILLISECONDS
        };
        SpringBeanHelper.registerIfAbsent(registry, HASHED_WHEEL_TIMER, HashedWheelTimer.class, constructorArgs);
    }
}

        registerHashedWheelTimer(registry);
        SpringBeanHelper.registerIfAbsent(registry, APPLICATION_CONTEXT_HOLDER, ApplicationContextHolder.class);

        // ApplicationContextHolder and HashedWheelTimer are required in DtpExecutor execute method, so they must be registered first
        SpringBeanHelper.registerIfAbsent(registry, DTP_POST_PROCESSOR, DtpPostProcessor.class,
                null, Lists.newArrayList(APPLICATION_CONTEXT_HOLDER, HASHED_WHEEL_TIMER));
    
<no_super_class>