interface D { } interface E { }

class C<T1, T2, TX, T3, T4, T5>
: IDisposable, IEnumerable<T1>
	where T1 : class,D ,E ,new()
		where T2 : IDictionary<D, Dictionary< string, float > >
where TX : struct, IDisposable
where T3: class
					where T4: D where T5:E
{
    void F<T3, T4, T5, TX, T6>()  where T3 : D, new()
    	where T4 : D
	where T5: D
	where TX : new()
	where T6: D
    {
    }

	class C2<T1, T2, TX, T3, T4, T5>
: IDisposable, IEnumerable<T1>
	where T1 : class,D ,E,new()
		where T2 : IDictionary<D, Dictionary< string, float > >
where TX : struct, IDisposable
	where T3: class
						where T4: D where T5:E
	{
	    void F2<T3, T4, T5, TX, T6>()
	    	where T3 : D, new()
	    	where T4 : D
		where T5: D
		where TX : new()
		where T6: D
	    {
	    }
	}
}
