concrete/*!!!*/Type<#a, #b // <- contravariant params |#c, #d // <- invariant params |#e, #f /* <- covariant params*/> { refines /* <- used with value interfaces */ Parent refines Other, #f> defines /* <- used with type interfaces */ Equals> #a allows /* <- used with value-interface filters */ Parent #b requires Type2<#a> #c defines // <- used with type-interface filters Equals<#c /* <- a type arg */> visibility _ @category create<#x> #x requires Type1 () -> (optional Type1) visibility #self @type create2<#y> #y requires #x #y allows T2 #y defines T3 () -> (optional #x) visibility Append @value get () -> (Type1) @value set (Type1) -> () }