### Question:
ServiceGenerator implements Runnable { @Override public void run() { writer.addImport("Client", "__Client", "@aws-sdk/smithy-client"); writer.addImport("ClientDefaultValues", "__ClientDefaultValues", "./runtimeConfig"); writeInputOutputTypeUnion("ServiceInputTypes", writer, operationSymbol -> operationSymbol.getProperty("inputType", Symbol.class), writer -> { writer.write("| {}"); }); writeInputOutputTypeUnion("ServiceOutputTypes", writer, operationSymbol -> operationSymbol.getProperty("outputType", Symbol.class), writer -> { writer.addImport("MetadataBearer", "__MetadataBearer", TypeScriptDependency.AWS_SDK_TYPES.packageName); writer.write("| __MetadataBearer"); }); generateConfig(); writer.write(""); generateService(); } ServiceGenerator(
            TypeScriptSettings settings,
            Model model,
            SymbolProvider symbolProvider,
            TypeScriptWriter writer,
            List<TypeScriptIntegration> integrations,
            List<RuntimeClientPlugin> runtimePlugins,
            ApplicationProtocol applicationProtocol
    ); @Override void run();  }### Answer:
@Test public void addsCustomIntegrationDependencyFields() { Model model = Model.assembler().addImport(getClass().getResource("simple-service.smithy")).assemble().unwrap(); TypeScriptSettings settings = TypeScriptSettings.from(model, Node.objectNodeBuilder() .withMember("service", Node.from("smithy.example#Example")) .withMember("package", Node.from("example")) .withMember("packageVersion", Node.from("1.0.0")) .build()); TypeScriptWriter writer = new TypeScriptWriter("./foo"); SymbolProvider symbolProvider = TypeScriptCodegenPlugin.createSymbolProvider(model); ApplicationProtocol applicationProtocol = ApplicationProtocol.createDefaultHttpApplicationProtocol(); List<TypeScriptIntegration> integrations = new ArrayList<>(); integrations.add(new TypeScriptIntegration() { @Override public void addConfigInterfaceFields( TypeScriptSettings settings, Model model, SymbolProvider symbolProvider, TypeScriptWriter writer ) { writer.writeDocs("Hello!"); writer.write("syn?: string;"); } }); new ServiceGenerator(settings, model, symbolProvider, writer, integrations, Collections.emptyList(), applicationProtocol).run(); assertThat(writer.toString(), containsString(" \n" + " syn?: string;")); }