MockspressoProperties
An interface that represents a MockspressoInstance that has not yet been fully constructed/ensured. It allows us to make changes to the graph while also leveraging kotlin's delegated properties to grab lazy references from it (that will be available after the MockspressoInstance under the hood has been ensured).
Most of the methods in the interface should be used in conjunction with Kotlin's delegated properties (aka "by") syntax.
Functions
Adds a DynamicObjectMaker to this MockspressoInstance. A DynamicObjectMaker gets a chance to supply any un-cached/undefined dependency before the request goes to the FallbackObjectMaker. This enables mockspresso plugins supply dependencies based on properties other than concrete types (i.e. generic types, class annotations, etc.). It also allows for "default" instances for bindings, which can be overridden by an explicit dependency.
Register a request to create a real object of type implementationToken bound in the mockspresso graph with key. The supplied interceptor lambda will be called when the real object is created and allows the test code to wrap the newly constructed real object before it's used. This enables the mock-support plugins to include spy support.
Add a callback that will fire when the MockspressoInstance is fully instantiated/ensured.
Add a callback that will fire when/if the MockspressoInstance is eventually torn down. (Automatic tear-down is not supported by default but can be configured using plugins).