private void initialize(Object bean, Class<?> beanClass) {
   Set<Method> initializeMethods = BeanFactoryUtils.getBeanMethods(beanClass, PostConstruct.class);
   if (initializeMethods.isEmpty()) {
     return;
   }
   for (Method initializeMethod : initializeMethods) {
     log.debug("@PostConstruct Initialize Method : {}", initializeMethod);
     BeanFactoryUtils.invokeMethod(
         initializeMethod, bean, populateArguments(initializeMethod.getParameterTypes()));
   }
 }
 private Optional<Object> createAnnotatedBean(BeanDefinition beanDefinition) {
   AnnotatedBeanDefinition abd = (AnnotatedBeanDefinition) beanDefinition;
   Method method = abd.getMethod();
   Object[] args = populateArguments(method.getParameterTypes());
   return BeanFactoryUtils.invokeMethod(method, getBean(method.getDeclaringClass()), args);
 }