// Compiler options: -t:library

public class A<T>
{
	public class B<U>
	{
		public class C<V>
		{
			public T T;
			public U U;
		}
	}
	
	public class B2
	{
		public T T;

		public class C<V>
		{
			public T T2;
		}
	}	
}

public static class Factory
{
	public static A<int>.B<bool>.C<string> Create_1()
	{
		return new A<int>.B<bool>.C<string> ();
	}
	
	public static A<int>.B2.C<string> Create_2()
	{
		return new A<int>.B2.C<string> ();
	}
	
	public static A<int>.B2 Create_3()
	{
		return new A<int>.B2 ();
	}	
}