@type interface Type1 {} @value interface Type2 {} @value interface Type3 {} concrete Type4<#x> { #x requires Type2 #x defines Type1 @type something<#y> #y requires Type2 () -> (Type4<#y>) }