Base class for Context-based decoration, specifically where the instance being decorated (InstanceT ) and the (DecorationT ) are not a class type.
Note that this class won't remove decoration relationships automatically and it needs to be manually removed by the client.
As with ClassToClassDecorator<InstanceT, DecorationT> and other descendants of DecoratorBase<InstanceT, DecorationT>, a goal of
ValueToValueDecorator is to be non-invasive and avoid altering behavior based on decoration. However, because neither InstanceT nor DecorationT are a class type, its lifecycle cannot be used to determine when to automatically remove its entry in the decorator; thus, even if the value decorated is no longer in use, decoration based on the instance lifecycle would continue to "pin the
decoration into existence" indefinitely, until the client actively calls RemoveDecoration.