Creates a "shadow" of a property of an object. The shadow has the same type as the property, and delegates all method
invocations to the property. Each method invocation on the shadow re-acquires the value of the property from the
underlying object and delegates to the current value of the property.
Typically, the object in question is another service, one with the "perthread" service lifecycle. This allows a
global singleton to shadow a value that is specific to the current thread (and therefore, the current request).