protected override string ProcessClass(GeneratorExecutionContext context, ISymbol @class, IEnumerable <IFieldSymbol> fields, INamedTypeSymbol attribute) { var builder = new SourceBuilder(@class.ContainingNamespace); builder.Imports.AddRange(new[] { "System", "System.Xml.Serialization", }); builder.Classes.AddRange(@class.ContainingTypes().Select(symbol => symbol.Name)); builder.Classes.Add(@class.Name); // create properties for each field builder.Code.AddRange(fields.Select(field => ProcessField(context, field, attribute))); return(builder.Build()); }