package Types {
abstract type A specializes Base::Anything;
type all x specializes A, Base::things;
// This Type has exactly one instance.
type Singleton[1] specializes Base::Anything;
type Super specializes Base::Anything {
private package P {
type Sub specializes Super;
}
protected feature f : P::Sub;
}
type B :> Base::Anything;
specialization Gen subtype A specializes B;
specialization subtype x :> Base::things;
type Original specializes Base::Anything {
in feature Input;
}
type Conjugate1 specializes Base::Anything;
type Conjugate2 specializes Base::Anything;
conjugation c1 conjugate Conjugate1 conjugates Original;
conjugation c2 conjugate Conjugate2 ~ Original;
type Conjugate3 conjugates Original;
type Conjugate4 ~ Conjugate1;
type C :> B disjoint from A;
type D :> Base::Anything unions A, B;
type E :> Base::Anything intersects A, B;
type F :> Base::Anything differences A, B;
}