final ConstructedValue interceptorInstanceValue = new ConstructedValue(interceptorConstructor, Collections.<Value<?>>emptyList());
// we *don't* create multiple instances of the container-interceptor class, but we just reuse a single instance and it's *not*
// tied to the EJB component instance lifecycle.
final CachedValue cachedInterceptorInstanceValue = new CachedValue(interceptorInstanceValue);
// ultimately create the managed reference which is backed by the CachedValue
final ManagedReference interceptorInstanceRef = new ValueManagedReference(cachedInterceptorInstanceValue);
// return the ContainerInterceptorMethodInterceptorFactory which is responsible for creating an Interceptor
// which can invoke the container-interceptor's around-invoke/around-timeout methods
return new ContainerInterceptorMethodInterceptorFactory(interceptorInstanceRef, method);
}