protected override Action <ITextControl> ExecutePsiTransaction(ISolution solution, IProgressIndicator progress)
        {
            var type = ctorExpression.Type();

            if (!type.IsResolved)
            {
                return(null);
            }

            var properties = type.GetClassType()?.Properties;

            if (properties == null)
            {
                return(null);
            }

            var objectInitializer = ctorExpression.Initializer as IObjectInitializer ?? factory.CreateObjectInitializer();

            var initializedProperties = new HashSet <string>(objectInitializer.MemberInitializers.OfType <IPropertyInitializer>().Select(x => x.MemberName));

            var classDeclaration     = provider.GetSelectedElement <IClassDeclaration>();
            var hasTestBaseSuperType = classDeclaration.GetAllSuperTypes().Any(x => x.GetClassType()?.ShortName.Contains("TestBase") ?? false);

            var dummyHelper           = new DummyHelper();
            var properiesToInitialize = new List <(string Name, string Value)>();

            foreach (var property in properties.Where(x => !initializedProperties.Contains(x.ShortName)))
            {
                var propertyDummyValue = hasTestBaseSuperType
                    ? dummyHelper.GetParamValue(property.Type, property.ShortName)
                    : "TODO";
                properiesToInitialize.Add((Name: property.ShortName, Value: propertyDummyValue));
            }

            foreach (var(name, value) in properiesToInitialize)
            {
                var initializer = factory.CreateObjectPropertyInitializer(name, factory.CreateExpression("$0", value));
                objectInitializer.AddMemberInitializerBefore(initializer, null);
            }

            ctorExpression.SetInitializer(objectInitializer);

            return(null);
        }