private SyntaxList <MemberDeclarationSyntax> CreateProtectedConstructors() { var list = new SyntaxList <MemberDeclarationSyntax>(); //We implicitly have version //if( m_fields.Count > 0 ) { BaseMethodDeclarationSyntax cons = SF.ConstructorDeclaration(m_class.Identifier); cons = SU.AddKeyword(cons, SyntaxKind.ProtectedKeyword); var paramList = new SeparatedSyntaxList <ParameterSyntax>(); { var param = SF.Parameter(SF.Identifier("version")) .WithType(SF.IdentifierName("ulong")); paramList = paramList.Add(param); } foreach (var f in m_fields) { var param = SF.Parameter(f.Key.Identifier) .WithType(f.Value); paramList = paramList.Add(param); } cons = cons.WithParameterList(SF.ParameterList(paramList)); var block = SF.Block(); var assignments = new SyntaxList <StatementSyntax>(); foreach (var f in m_fields) { var statement = SF.ParseStatement($"this.{f.Key.Identifier} = {f.Key.Identifier};"); assignments = assignments.Add(statement); } block = block.WithStatements(assignments); cons = cons.WithBody(block); list = list.Add(cons); } { BaseMethodDeclarationSyntax cons = SF.ConstructorDeclaration(m_class.Identifier); cons = SU.AddKeyword(cons, SyntaxKind.ProtectedKeyword); var block = SF.Block(); cons = cons.WithBody(block); list = list.Add(cons); } return(list); }