public override void VisitClassType <TAttributeGroup, TGenericParameter, TClassReference, TInterfaceReference, TEventCollection, TPropertyCollection, TIndexerCollection, TMethodCollection, TFieldCollection, TConstructor, TOperatorOverload, TConversionOperator, TNestedClassCollection, TNestedDelegate, TNestedEnum, TNestedInterface, TNestedStructCollection, TStaticConstructor, TDestructor>(
            IClassType <TAttributeGroup, TGenericParameter, TClassReference, TInterfaceReference, TEventCollection, TPropertyCollection, TIndexerCollection, TMethodCollection, TFieldCollection, TConstructor, TOperatorOverload, TConversionOperator, TNestedClassCollection, TNestedDelegate, TNestedEnum, TNestedInterface, TNestedStructCollection, TStaticConstructor, TDestructor> @class)
        {
            ClassBody properties;
            ObjectInitializerExpression expression = CreateExpression(typeof(ClassBody));

            expression.Members.AddIfNotNull(nameof(properties.Fields), @class.Fields);
            expression.Members.AddIfNotNull(nameof(properties.Events), @class.Events);
            expression.Members.AddIfNotNull(nameof(properties.Properties), @class.Properties);
            expression.Members.AddIfNotNull(
                nameof(properties.ExplicitInterfaceProperties),
                WrapperFactory.CreateClassPropertyCollectionWrapper(@class.Properties).ExplicitInterfaceProperties);
            expression.Members.AddIfNotNull(nameof(properties.Indexers), @class.Indexers);
            //
            expression.Members.AddIfNotNull(nameof(properties.Methods), @class.Methods);
            UseExpression(expression);
        }