--- /dev/null
+class Top<X>
+{
+ public class C : I1<int>
+ {
+ }
+
+ interface I1<T> : I2<T>
+ {
+ }
+
+ interface I2<U>
+ {
+ }
+}
+
+class M
+{
+ public static int Main ()
+ {
+ return 0;
+ }
+}
\ No newline at end of file
--- /dev/null
+class G<T>
+{
+}
+
+interface I
+{
+ void Foo<T> () where T : G<T>;
+}
+
+class A : I
+{
+ public void Foo<U> () where U : G<U>
+ {
+ }
+
+ public static void Main ()
+ {
+ }
+}
\ No newline at end of file
</method>
</type>
</test>
+ <test name="gtest-518.cs">
+ <type name="Top`1[X]">
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="Top`1+C[X]">
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="M">
+ <method name="Int32 Main()">
+ <size>2</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ </test>
+ <test name="gtest-519.cs">
+ <type name="G`1[T]">
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ <type name="A">
+ <method name="Void Foo[U]()">
+ <size>1</size>
+ </method>
+ <method name="Void Main()">
+ <size>1</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ </test>
<test name="gtest-anon-1.cs">
<type name="X">
<method name="Void .ctor()">
</method>
</type>
</test>
+ <test name="gtest-named-02.cs">
+ <type name="D">
+ <method name="Void Foo(Int32)">
+ <size>1</size>
+ </method>
+ <method name="Void Main()">
+ <size>1</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ </test>
<test name="gtest-optional-01.cs">
<type name="C">
<method name="Void TestA(Int32)">
</method>
</type>
</test>
+ <test name="test-783.cs">
+ <type name="C">
+ <method name="Void Main()">
+ <size>25</size>
+ </method>
+ <method name="Void M(E)">
+ <size>1</size>
+ </method>
+ <method name="Void .ctor()">
+ <size>7</size>
+ </method>
+ </type>
+ </test>
<test name="test-79.cs">
<type name="X">
<method name="Void .ctor()">