IWrapped interface to allow wrapping of IValues from the outside.

Simple extension interface to allow wrapping of IValues without breaking equality checking.

Can it also be done with extending IValue? IValue is a closed system, if you extend it like this, outside of IExternalValue, then (de)serialization and visiting will break in unexpected ways.