@value interface Type1 {} @value interface Type2 { refines Type1 } @value interface Type3 { refines Type2 } @value interface Interface1<|#x> { something (Type2) -> (Type1) } @value interface Interface2 { something (Type3) -> (Type2) } @value interface Test1 { refines Interface1 refines Interface2 something (Type2) -> (Type2) } @value interface Test2 { refines Interface1 refines Test1 // something must be merged again, since Interface1 is inherited again. }