private void MkTypes() { //add type declaration and initialization for duplicate exported types foreach (KeyValuePair <string, FuncTerm> dt in typeContext.DuplicateExportedTypes) { string typeName = typeContext.GetNextTypeName(dt.Key); ExpressionSyntax typeExpr = typeContext.GetTypeExpr(typeName); ExpressionSyntax declaredTypeExpr = typeContext.PTypeToCSharpExpr(dt.Value); typeContext.AddTypeDeclaration(typeName); typeContext.AddTypeInitialization(typeExpr, declaredTypeExpr); } var typeDeclarations = new List <SyntaxNode>(); typeDeclarations.AddRange(typeContext.TypeDeclaration); string staticMethodName = "Types_" + Path.GetFileNameWithoutExtension(cSharpFileName.ToLower()); MethodDeclarationSyntax staticInitializer = MethodDeclaration(PredefinedType(Token(SyntaxKind.VoidKeyword)), Identifier(staticMethodName)) .WithModifiers(TokenList(Token(SyntaxKind.StaticKeyword), Token(SyntaxKind.PublicKeyword))) .WithBody(Block(typeContext.TypeInitialization)).NormalizeWhitespace(); typeDeclarations.Add(staticInitializer); SyntaxNode typesClass = generator.ClassDeclaration( "Types", null, Accessibility.Public, DeclarationModifiers.Partial, members: typeDeclarations); members.Add(typesClass); }