enumeration With
Answer a new object instance of this descriptor based on the set of objects that will be considered instances of that type. Normalize the cases where the set has zero or one elements to use BottomTypeDescriptor and InstanceTypeDescriptor, respectively.
Note that we also have to assure type union metainvariance, namely: ∀x,y∈T (T(x)∪T(y) = T(x∪y)). Thus, if there are multiple instances which are types, use their type union as a single member in place of them.
Return
An AvailObject representing the type whose instances are those objects specified in the argument.
Parameters
instances Set
The set of objects which are to be instances of the new type.