void RunTransformsAndGenerateCode(ref BuilderState state, IDecompilerOutput output, DecompilationContext ctx, IAstTransform?additionalTransform = null) { var astBuilder = state.AstBuilder; astBuilder.RunTransformations(transformAbortCondition); if (additionalTransform is not null) { additionalTransform.Run(astBuilder.SyntaxTree); } var settings = GetDecompilerSettings(); CSharpDecompiler.AddXmlDocumentation(ref state, settings, astBuilder); var csharpUnit = astBuilder.SyntaxTree; csharpUnit.AcceptVisitor(new ICSharpCode.NRefactory.CSharp.InsertParenthesesVisitor() { InsertParenthesesForReadability = true }); GenericGrammarAmbiguityVisitor.ResolveAmbiguities(csharpUnit); var unit = csharpUnit.AcceptVisitor(new CSharpToVBConverterVisitor(state.AstBuilder.Context.CurrentModule, new ILSpyEnvironmentProvider(state.State.XmlDoc_StringBuilder)), null); var outputFormatter = new VBTextOutputFormatter(output, astBuilder.Context); var formattingPolicy = CreateVBFormattingOptions(settings); unit.AcceptVisitor(new OutputVisitor(outputFormatter, formattingPolicy), null); }