@value interface Base1 {} @type interface Base2 {} concrete Type<#x|#y|#z> { @type call #x allows Base1 #y requires Base1 #z defines Base2 (#x,#y) -> (#y,#z) }