public boolean canInject(final BeanKey bean) {
        if (bean == null) {
            return false;
        }

        if (bean == this) {
            return true;
        }

        if (beanType.equals(bean.getBeanType()) && qualifier == null) {
            return true;
        }

        if (GenericsHelper.isAssignableFrom(beanType, bean.getBeanType())) {
            if (isTheSameQualifier(qualifier, bean.getQualifier())) {
                return true;
            }

            else if (hasTheAnyQualifier()) {
                return true;
            }
        }

        return false;
    }