ObjcInterop;
  @AddToRuleKey private final Optional<SourcePath> bridgingHeader;

  @AddToRuleKey private final Preprocessor cPreprocessor;

  @AddToRuleKey private final PreprocessorFlags cxxDeps;

  @AddToRuleKey private final boolean importUnderlyingModule;

  private BuildableSupport.DepsSupplier depsSupplier;

  SwiftCompile(
      SwiftBuckConfig swiftBuckConfig,
      BuildTarget buildTarget,
      SwiftTargetTriple swiftTarget,
      ProjectFilesystem projectFilesystem,
      ActionGraphBuilder graphBuilder,
      Tool swiftCompiler,
      ImmutableSet<FrameworkPath> frameworks,
      AddsToRuleKeyFunction<FrameworkPath, Path> frameworkPathToSearchPath,
      Flavor flavor,
      String moduleName,
      Path outputPath,
      Iterable<SourcePath> srcs,
      Optional<String> version,
      ImmutableList<Arg> compilerFlags,
      Optional<Boolean> enableObjcInterop,
      Optional<SourcePath> bridgingHeader,
      Preprocessor preprocessor,
      PreprocessorFlags cxxDeps,
      boolean importUnderlyingModule) {
    super(buildTarget, projectFilesystem);
    this.frameworks = frameworks;
    this.frameworkPathToSearchPath = frameworkPathToSearchPath;
    this.flavor = flavor;
    this.swiftCompiler = swiftCompiler;
    this.outputPath = outputPath;
    this.importUnderlyingModule = importUnderlyingModule;
    this.headerPath = outputPath.resolve(SwiftDescriptions.toSwiftHeaderName(moduleName) + ".h");

    String escapedModuleName = CxxDescriptionEnhancer.normalizeModuleName(moduleName);
    this.moduleName = escapedModuleName;
    this.objectFilePath = outputPath.resolve(escapedModuleName + ".o");
    this.modulePath = outputPath.resolve(escapedModuleName + ".swiftmodule");
    this.moduleObjectPath = outputPath.resolve(escapedModuleName + ".swiftmodule.o");
    this.objectPaths =
        swiftBuckConfig.getUseModulewrap()
            ? ImmutableList.of(objectFilePath, moduleObjectPath)
            : ImmutableList.of(objectFilePath);
    this.swiftFileListPath =
        swiftBuckConfig.getUseFileList()
  