This check will only work for pseudo scopes where we receive the immediate instance. For normal-scoped beans we receive a proxy and CNFE is thrown beyound this check point. We should either call beanManager.getContext() for declaringBean.getScope() upfront, or pass true to the "noProxy" argument of the getReference method.