// Setup. @type interface Type<#x|> { #x requires Value0 } @value interface Value0 {} @value interface Value1<|#y> { #y requires Value0 } @value interface Value2 { refines Value0 } @value interface Value3<|#z> { #z defines Type } // Tests. concrete Object0 { refines Value2 // -> Value0 defines Type refines Value1 } concrete Object1 { defines Type refines Value3 }