public override IEnumerable <string> Visit(Data.C node)
 {
     foreach (var item in node)
     {
         foreach (var item2 in item.Accept(this))
         {
             yield return(item2);
         }
     }
 }
        public void ArgumentsAreAssigned()
        {
            var a = new Data.A();
            var b = new Data.B();
            var c = new Data.C();

            factory.AddEligibleType <Data.ObjectWithParams <Data.A, Data.B, Data.C> >();

            var obj = factory.Create(new object[] { a, b, c });

            Assert.IsInstanceOf <Data.ObjectWithParams <Data.A, Data.B, Data.C> >(obj);

            var typedObj = (Data.ObjectWithParams <Data.A, Data.B, Data.C>)obj;

            Assert.AreSame(a, typedObj.Value1);
            Assert.AreSame(b, typedObj.Value2);
            Assert.AreSame(c, typedObj.Value3);
        }