public static Collection<? extends Bean> scanForBeansFromMethods(Class baseType) {

        Set<Bean> beansCollection = new HashSet<Bean>();
        Method[] methods=baseType.getDeclaredMethods();

        for (Method method : methods) {
            org.frameworkdi.poc.annotations.Bean bean = method.getAnnotation(org.frameworkdi.poc.annotations.Bean.class);
            if(bean == null) continue;
            Inject injectedBean = method.getAnnotation(Inject.class);
            if(injectedBean==null) continue;
            String beanName = getBeanName(bean,method.getReturnType());
            Set<String> injectedBeansName = getInjectedBeansName(injectedBean, method.getParameterTypes());
            Bean beanObj = new Bean(
                    beanName,
                    method.getReturnType(),
                    bean.scope(),
                    injectedBeansName,
                    new HashSet<Bean>()
            );
            beansCollection.add(beanObj);

        }

        if(!baseType.getSuperclass().equals(Object.class)){
            beansCollection.addAll(scanForBeansFromMethods(baseType.getSuperclass()));
        }

        return beansCollection;

    }