public class Moo<C>
	where C : Moo<C>.Foo
{
	public class Foo
	{ }
}

public class Test : Moo<Test>.Foo
{
}

class X
{
	public static void Main ()
	{
		Moo<Test> moo = new Moo<Test> ();
	}
}