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

        Set<Bean> ret = new HashSet<Bean>();
        Field[] fields = baseType.getDeclaredFields();
        for (Field field : fields) {
            org.frameworkdi.poc.annotations.Bean bean = field.getAnnotation(org.frameworkdi.poc.annotations.Bean.class);
            if(bean==null) continue;
            Bean beanObj = new Bean(
                    getBeanName(bean,field.getType()),
                    field.getType(),
                    bean.scope(),
                    new HashSet<String>(),
                    new HashSet<Bean>()
            );
            ret.add(beanObj);
        }

        if(!baseType.getSuperclass().equals(Object.class)){
            ret.addAll(scanForBeansFromFields(baseType.getSuperclass()));
        }
        return ret;
    }