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); }