public static TraitCodegen fromPluginContext(PluginContext context) {
        return new TraitCodegen(
                context.getModel(),
                TraitCodegenSettings.fromNode(context.getSettings()),
                context.getFileManifest(),
                context);
    }
Orchestration class for Trait code generation.

<p>Trait codegen executes the following steps:
<ul>
    <li>Orchestrator creation - Plugin creates an instance of {@link TraitCodegen}.</li>
    <li>Initialization - {@link #initialize()} is called to discover integration, filter out
    any shapes with excluded tags, and set up the codegen context.</li>
    <li>Execution - {@link #run()} is called to build a list of shapes to generate by pulling
    all shapes with the {@link TraitDefinition} trait applied and walking the nested shapes inside
    of those trait shapes. Then the {@link ShapeGenerator} is applied to each of the shapes to
    generate. Finally, all of the writers created during the shapes generation process are flushed.</li>
</ul>
smithy-trait-codegen/src/main/java/software/amazon/smithy/traitcodegen/TraitCodegen.java