1 interface IBar(T)
2 {
3     IFoo!T ownerDocument();
4 }
5 
6 interface IFoo(T): IBar!T
7 {
8     // un-commenting the following line solves the issue
9     //IList!T getList();
10 }
11 
12 interface IList(T) {}
13 
14 class DOMImplementation(T)
15 {
16     class BarImpl: IBar!T
17     {
18         FooImpl ownerDocument() { return null; }
19     }
20     class FooImpl: BarImpl, IFoo!T
21     {
22         IList!T getList() { return null; }
23     }
24 }
25 
26 void main()
27 {
28     auto impl = new DOMImplementation!string();
29 }
30