The [Lifted] type allows us to express the operation of taking a type, with potentially deeply
nested objects and arrays and to then get a type with the same properties, except whose property
types are now [Output]s of the original property type.
[Lifted] is somewhat the opposite of [Unwrap]. It's primary purpose is to allow an instance of
[Output] to provide simple access to the properties of [SomeType] directly on the instance
itself (instead of haveing to use [.apply]).
This lifting only happens through simple pojo objects and arrays. Functions, for example, are not
lifted. So you cannot do:
The [Lifted] type allows us to express the operation of taking a type, with potentially deeply nested objects and arrays and to then get a type with the same properties, except whose property types are now [Output]s of the original property type.
For example:
Then
Lifted<X>
would be equivalent to:[Lifted] is somewhat the opposite of [Unwrap]. It's primary purpose is to allow an instance of [Output] to provide simple access to the properties of [SomeType] directly on the instance
itself (instead of haveing to use [.apply]).
This lifting only happens through simple pojo objects and arrays. Functions, for example, are not lifted. So you cannot do:
Instead, you still need to write;