internal static GenerateResults Generate(Type baseType, SortedSet <string> namespaces, NameGenerator generator, MethodInformationBuilder informationBuilder, bool isMake, bool hasEvents) { var requiresObsoleteSuppression = false; var generatedProperties = new List <string>(); foreach (var property in baseType.GetMockableProperties(generator)) { var baseProperty = property.Value; namespaces.Add(baseProperty.PropertyType.Namespace); var indexers = baseProperty.GetIndexParameters(); var propertyMethod = baseProperty.GetDefaultMethod(); var methodInformation = informationBuilder.Build(new MockableResult <MethodInfo>( propertyMethod, RequiresExplicitInterfaceImplementation.No)); if (propertyMethod.IsPublic) { var @override = methodInformation.DescriptionWithOverride.Contains("override", StringComparison.Ordinal) ? "override " : string.Empty; requiresObsoleteSuppression = PropertiesGenerator.HandlePublicProperty( namespaces, isMake, hasEvents, requiresObsoleteSuppression, generatedProperties, property, baseProperty, indexers, @override); } else if (!propertyMethod.IsPrivate && propertyMethod.IsAbstract) { requiresObsoleteSuppression = PropertiesGenerator.HandleNonPrivateAbstractProperty( namespaces, requiresObsoleteSuppression, generatedProperties, property, baseProperty, indexers, propertyMethod); } } return(new GenerateResults(string.Join(Environment.NewLine, generatedProperties), requiresObsoleteSuppression, false)); }