C++: Rename LibraryToLinkWrapper to LibraryToLink

RELNOTES:none
PiperOrigin-RevId: 233719947
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCcModule.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCcModule.java
index f6d58e4..66fe2d8 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCcModule.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCcModule.java
@@ -26,8 +26,8 @@
 import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.FeatureConfiguration;
 import com.google.devtools.build.lib.rules.cpp.CcToolchainProvider;
 import com.google.devtools.build.lib.rules.cpp.CcToolchainVariables;
-import com.google.devtools.build.lib.rules.cpp.LibraryToLinkWrapper;
-import com.google.devtools.build.lib.rules.cpp.LibraryToLinkWrapper.CcLinkingContext;
+import com.google.devtools.build.lib.rules.cpp.LibraryToLink;
+import com.google.devtools.build.lib.rules.cpp.LibraryToLink.CcLinkingContext;
 import com.google.devtools.build.lib.skylarkbuildapi.cpp.BazelCcModuleApi;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.Runtime;
@@ -50,7 +50,7 @@
         CcCompilationOutputs,
         LinkingInfo,
         CcLinkingContext,
-        LibraryToLinkWrapper,
+        LibraryToLink,
         CcToolchainVariables,
         CcToolchainConfigInfo> {
 
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java
index d8fd5be..7a84702 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java
@@ -49,8 +49,8 @@
 import com.google.devtools.build.lib.rules.android.ZipFilterBuilder.CheckHashMismatchMode;
 import com.google.devtools.build.lib.rules.android.databinding.DataBindingContext;
 import com.google.devtools.build.lib.rules.cpp.CcInfo;
-import com.google.devtools.build.lib.rules.cpp.LibraryToLinkWrapper.CcLinkingContext;
-import com.google.devtools.build.lib.rules.cpp.LibraryToLinkWrapper.CcLinkingContext.LinkOptions;
+import com.google.devtools.build.lib.rules.cpp.LibraryToLink.CcLinkingContext;
+import com.google.devtools.build.lib.rules.cpp.LibraryToLink.CcLinkingContext.LinkOptions;
 import com.google.devtools.build.lib.rules.java.ClasspathConfiguredFragment;
 import com.google.devtools.build.lib.rules.java.JavaCcLinkParamsProvider;
 import com.google.devtools.build.lib.rules.java.JavaCommon;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/NativeLibs.java b/src/main/java/com/google/devtools/build/lib/rules/android/NativeLibs.java
index 3187e82..0dbf12b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/NativeLibs.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/NativeLibs.java
@@ -38,7 +38,7 @@
 import com.google.devtools.build.lib.rules.cpp.CcToolchainProvider;
 import com.google.devtools.build.lib.rules.cpp.CppHelper;
 import com.google.devtools.build.lib.rules.cpp.CppSemantics;
-import com.google.devtools.build.lib.rules.cpp.LibraryToLinkWrapper;
+import com.google.devtools.build.lib.rules.cpp.LibraryToLink;
 import com.google.devtools.build.lib.rules.nativedeps.NativeDepsHelper;
 import com.google.devtools.build.lib.skyframe.ConfiguredTargetAndData;
 import com.google.devtools.build.lib.vfs.PathFragment;
@@ -246,13 +246,13 @@
   }
 
   private static Iterable<Artifact> filterUniqueSharedLibraries(
-      RuleContext ruleContext, Artifact linkedLibrary, NestedSet<LibraryToLinkWrapper> libraries) {
+      RuleContext ruleContext, Artifact linkedLibrary, NestedSet<LibraryToLink> libraries) {
     Map<String, Artifact> basenames = new HashMap<>();
     Set<Artifact> artifacts = new HashSet<>();
     if (linkedLibrary != null) {
       basenames.put(linkedLibrary.getExecPath().getBaseName(), linkedLibrary);
     }
-    for (LibraryToLinkWrapper linkerInput : libraries) {
+    for (LibraryToLink linkerInput : libraries) {
       if (linkerInput.getPicStaticLibrary() != null || linkerInput.getStaticLibrary() != null) {
         // This is not a shared library and will not be loaded by Android, so skip it.
         continue;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java
index 5907c07..311ac76 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java
@@ -59,8 +59,8 @@
 import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.FeatureConfiguration;
 import com.google.devtools.build.lib.rules.cpp.CppConfiguration.DynamicMode;
 import com.google.devtools.build.lib.rules.cpp.CppConfiguration.Tool;
-import com.google.devtools.build.lib.rules.cpp.LibraryToLinkWrapper.CcLinkingContext;
-import com.google.devtools.build.lib.rules.cpp.LibraryToLinkWrapper.CcLinkingContext.LinkOptions;
+import com.google.devtools.build.lib.rules.cpp.LibraryToLink.CcLinkingContext;
+import com.google.devtools.build.lib.rules.cpp.LibraryToLink.CcLinkingContext.LinkOptions;
 import com.google.devtools.build.lib.rules.cpp.Link.LinkTargetType;
 import com.google.devtools.build.lib.rules.cpp.Link.LinkingMode;
 import com.google.devtools.build.lib.syntax.Type;
@@ -154,7 +154,7 @@
       RuleContext ruleContext,
       FeatureConfiguration featureConfiguration,
       CcToolchainProvider toolchain,
-      List<LibraryToLinkWrapper> libraries,
+      List<LibraryToLink> libraries,
       CcLinkingOutputs ccLibraryLinkingOutputs,
       CcCompilationContext ccCompilationContext,
       Link.LinkingMode linkingMode,
@@ -173,7 +173,7 @@
     builder.addTransitiveArtifacts(transitiveArtifacts);
     // Add the shared libraries to the runfiles. This adds any shared libraries that are in the
     // srcs of this target.
-    builder.addArtifacts(LibraryToLinkWrapper.getDynamicLibrariesForRuntime(true, libraries));
+    builder.addArtifacts(LibraryToLink.getDynamicLibrariesForRuntime(true, libraries));
     builder.addRunfiles(ruleContext, RunfilesProvider.DEFAULT_RUNFILES);
     // TODO(plf): Why do we need .so files produced by cc_library in data dependencies of cc_binary?
     // This can probably be removed safely.
@@ -401,7 +401,7 @@
         ImmutableList.Builder<Artifact> objectFiles = ImmutableList.builder();
         objectFiles.addAll(ccCompilationOutputs.getObjectFiles(false));
 
-        for (LibraryToLinkWrapper library : depsCcLinkingContext.getLibraries()) {
+        for (LibraryToLink library : depsCcLinkingContext.getLibraries()) {
           if (isStaticMode
               || (library.getDynamicLibrary() == null && library.getInterfaceLibrary() == null)) {
             if (library.getPicStaticLibrary() != null) {
@@ -435,8 +435,7 @@
       pdbFile = ruleContext.getRelatedArtifact(binary.getRootRelativePath(), ".pdb");
     }
 
-    NestedSetBuilder<LibraryToLinkWrapper> extraLinkTimeLibrariesNestedSet =
-        NestedSetBuilder.linkOrder();
+    NestedSetBuilder<LibraryToLink> extraLinkTimeLibrariesNestedSet = NestedSetBuilder.linkOrder();
     NestedSetBuilder<Artifact> extraLinkTimeRuntimeLibraries = NestedSetBuilder.linkOrder();
 
     ExtraLinkTimeLibraries extraLinkTimeLibraries =
@@ -479,10 +478,10 @@
 
     CcLauncherInfo ccLauncherInfo = ccLinkingOutputsAndCcLinkingInfo.second;
 
-    LibraryToLinkWrapper ccLinkingOutputsBinaryLibrary = ccLinkingOutputsBinary.getLibraryToLink();
+    LibraryToLink ccLinkingOutputsBinaryLibrary = ccLinkingOutputsBinary.getLibraryToLink();
     Iterable<Artifact> fakeLinkerInputs =
         fake ? ccLinkingOutputsBinary.getLinkActionInputs() : ImmutableList.<Artifact>of();
-    ImmutableList.Builder<LibraryToLinkWrapper> librariesBuilder = ImmutableList.builder();
+    ImmutableList.Builder<LibraryToLink> librariesBuilder = ImmutableList.builder();
     if (isLinkShared(ruleContext)) {
       if (ccLinkingOutputsBinaryLibrary != null) {
         librariesBuilder.add(ccLinkingOutputsBinaryLibrary);
@@ -491,15 +490,15 @@
     // Also add all shared libraries from srcs.
     for (Artifact library : precompiledFiles.getSharedLibraries()) {
       Artifact symlink = common.getDynamicLibrarySymlink(library, true);
-      LibraryToLinkWrapper libraryToLink =
-          LibraryToLinkWrapper.builder()
+      LibraryToLink libraryToLink =
+          LibraryToLink.builder()
               .setLibraryIdentifier(CcLinkingOutputs.libraryIdentifierOf(library))
               .setDynamicLibrary(symlink)
               .setResolvedSymlinkDynamicLibrary(library)
               .build();
       librariesBuilder.add(libraryToLink);
     }
-    ImmutableList<LibraryToLinkWrapper> libraries = librariesBuilder.build();
+    ImmutableList<LibraryToLink> libraries = librariesBuilder.build();
     NestedSet<Artifact> filesToBuild = NestedSetBuilder.create(Order.STABLE_ORDER, binary);
 
     // Create the stripped binary, but don't add it to filesToBuild; it's only built when requested.
@@ -539,10 +538,9 @@
     // all the dynamic libraries we need at runtime. Then copy these libraries next to the binary.
     if (featureConfiguration.isEnabled(CppRuleClasses.COPY_DYNAMIC_LIBRARIES_TO_BINARY)) {
       ImmutableList.Builder<Artifact> runtimeLibraries = ImmutableList.builder();
-      for (LibraryToLinkWrapper libraryToLinkWrapper : depsCcLinkingContext.getLibraries()) {
+      for (LibraryToLink libraryToLink : depsCcLinkingContext.getLibraries()) {
         Artifact library =
-            libraryToLinkWrapper.getDynamicLibraryForRuntimeOrNull(
-                /* linkingStatically= */ isStaticMode);
+            libraryToLink.getDynamicLibraryForRuntimeOrNull(/* linkingStatically= */ isStaticMode);
         if (library != null) {
           runtimeLibraries.add(library);
         }
@@ -614,7 +612,7 @@
     }
 
     if (!ccLinkingOutputsBinary.isEmpty()) {
-      LibraryToLinkWrapper libraryToLink = ccLinkingOutputsBinary.getLibraryToLink();
+      LibraryToLink libraryToLink = ccLinkingOutputsBinary.getLibraryToLink();
       Artifact dynamicLibraryForLinking = null;
       if (libraryToLink.getInterfaceLibrary() != null) {
         if (libraryToLink.getResolvedSymlinkInterfaceLibrary() != null) {
@@ -658,7 +656,7 @@
       boolean fake,
       Artifact binary,
       CcLinkingContext depsCcLinkingContext,
-      NestedSet<LibraryToLinkWrapper> extraLinkTimeLibraries,
+      NestedSet<LibraryToLink> extraLinkTimeLibraries,
       boolean linkCompileOutputSeparately,
       CppSemantics cppSemantics,
       LinkingMode linkingMode,
@@ -690,7 +688,7 @@
     if (linkCompileOutputSeparately) {
       if (!ccLinkingOutputs.isEmpty()) {
         currentCcLinkingContextBuilder.addLibraries(
-            NestedSetBuilder.<LibraryToLinkWrapper>linkOrder()
+            NestedSetBuilder.<LibraryToLink>linkOrder()
                 .add(ccLinkingOutputs.getLibraryToLink())
                 .build());
       }
@@ -701,32 +699,32 @@
     // First libraries from srcs. Shared library artifacts here are substituted with mangled symlink
     // artifacts generated by getDynamicLibraryLink(). This is done to minimize number of -rpath
     // entries during linking process.
-    ImmutableList.Builder<LibraryToLinkWrapper> precompiledLibraries = ImmutableList.builder();
+    ImmutableList.Builder<LibraryToLink> precompiledLibraries = ImmutableList.builder();
     for (Artifact library : precompiledFiles.getLibraries()) {
       if (Link.SHARED_LIBRARY_FILETYPES.matches(library.getFilename())) {
-        LibraryToLinkWrapper libraryToLinkWrapper =
-            LibraryToLinkWrapper.builder()
+        LibraryToLink libraryToLink =
+            LibraryToLink.builder()
                 .setLibraryIdentifier(CcLinkingOutputs.libraryIdentifierOf(library))
                 .setDynamicLibrary(
                     common.getDynamicLibrarySymlink(library, /* preserveName= */ true))
                 .setResolvedSymlinkDynamicLibrary(library)
                 .build();
-        precompiledLibraries.add(libraryToLinkWrapper);
+        precompiledLibraries.add(libraryToLink);
       } else if (Link.LINK_LIBRARY_FILETYPES.matches(library.getFilename())) {
-        LibraryToLinkWrapper libraryToLinkWrapper =
-            LibraryToLinkWrapper.builder()
+        LibraryToLink libraryToLink =
+            LibraryToLink.builder()
                 .setLibraryIdentifier(CcLinkingOutputs.libraryIdentifierOf(library))
                 .setStaticLibrary(library)
                 .setAlwayslink(true)
                 .build();
-        precompiledLibraries.add(libraryToLinkWrapper);
+        precompiledLibraries.add(libraryToLink);
       } else if (Link.ARCHIVE_FILETYPES.matches(library.getFilename())) {
-        LibraryToLinkWrapper libraryToLinkWrapper =
-            LibraryToLinkWrapper.builder()
+        LibraryToLink libraryToLink =
+            LibraryToLink.builder()
                 .setLibraryIdentifier(CcLinkingOutputs.libraryIdentifierOf(library))
                 .setStaticLibrary(library)
                 .build();
-        precompiledLibraries.add(libraryToLinkWrapper);
+        precompiledLibraries.add(libraryToLink);
       } else {
         throw new IllegalStateException();
       }
@@ -1032,7 +1030,7 @@
       NestedSet<Artifact> filesToBuild,
       CcCompilationOutputs ccCompilationOutputs,
       CcCompilationContext ccCompilationContext,
-      List<LibraryToLinkWrapper> libraries,
+      List<LibraryToLink> libraries,
       DwoArtifactsCollector dwoArtifacts,
       boolean fake) {
     List<Artifact> instrumentedObjectFiles = new ArrayList<>();
@@ -1077,9 +1075,9 @@
     CppHelper.maybeAddStaticLinkMarkerProvider(builder, ruleContext);
   }
 
-  private static NestedSet<LibraryToLinkWrapper> collectTransitiveCcNativeLibraries(
-      RuleContext ruleContext, List<LibraryToLinkWrapper> libraries) {
-    NestedSetBuilder<LibraryToLinkWrapper> builder = NestedSetBuilder.linkOrder();
+  private static NestedSet<LibraryToLink> collectTransitiveCcNativeLibraries(
+      RuleContext ruleContext, List<LibraryToLink> libraries) {
+    NestedSetBuilder<LibraryToLink> builder = NestedSetBuilder.linkOrder();
     builder.addAll(libraries);
     for (CcNativeLibraryProvider dep :
         ruleContext.getPrerequisites("deps", Mode.TARGET, CcNativeLibraryProvider.class)) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcImport.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcImport.java
index 06f601a..f1bab33 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcImport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcImport.java
@@ -30,7 +30,7 @@
 import com.google.devtools.build.lib.rules.cpp.CcCompilationHelper.CompilationInfo;
 import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.FeatureConfiguration;
 import com.google.devtools.build.lib.rules.cpp.CppConfiguration.HeadersCheckingMode;
-import com.google.devtools.build.lib.rules.cpp.LibraryToLinkWrapper.CcLinkingContext;
+import com.google.devtools.build.lib.rules.cpp.LibraryToLink.CcLinkingContext;
 import com.google.devtools.build.lib.syntax.Type;
 import java.util.Map;
 import javax.annotation.Nullable;
@@ -136,8 +136,8 @@
     }
 
     if (notNullArtifactToLink != null) {
-      LibraryToLinkWrapper libraryToLinkWrapper =
-          LibraryToLinkWrapper.builder()
+      LibraryToLink libraryToLink =
+          LibraryToLink.builder()
               .setStaticLibrary(noPicAndPicStaticLibrary.noPicStaticLibrary())
               .setPicStaticLibrary(noPicAndPicStaticLibrary.picStaticLibrary())
               .setDynamicLibrary(sharedLibrary)
@@ -149,10 +149,7 @@
               .build();
       ccLinkingContext =
           CcLinkingContext.builder()
-              .addLibraries(
-                  NestedSetBuilder.<LibraryToLinkWrapper>linkOrder()
-                      .add(libraryToLinkWrapper)
-                      .build())
+              .addLibraries(NestedSetBuilder.<LibraryToLink>linkOrder().add(libraryToLink).build())
               .build();
     }
 
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcInfo.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcInfo.java
index 15187b5..c0c20e4 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcInfo.java
@@ -21,7 +21,7 @@
 import com.google.devtools.build.lib.events.Location;
 import com.google.devtools.build.lib.packages.BuiltinProvider;
 import com.google.devtools.build.lib.packages.NativeInfo;
-import com.google.devtools.build.lib.rules.cpp.LibraryToLinkWrapper.CcLinkingContext;
+import com.google.devtools.build.lib.rules.cpp.LibraryToLink.CcLinkingContext;
 import com.google.devtools.build.lib.skylarkbuildapi.cpp.CcInfoApi;
 import com.google.devtools.build.lib.syntax.Environment;
 import com.google.devtools.build.lib.syntax.EvalException;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java
index 93d170e..ad6bba3 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java
@@ -48,9 +48,8 @@
 import com.google.devtools.build.lib.rules.cpp.CcCommon.CcFlagsSupplier;
 import com.google.devtools.build.lib.rules.cpp.CcCompilationHelper.CompilationInfo;
 import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.FeatureConfiguration;
-import com.google.devtools.build.lib.rules.cpp.LibraryToLinkWrapper.CcLinkingContext;
+import com.google.devtools.build.lib.rules.cpp.LibraryToLink.CcLinkingContext;
 import com.google.devtools.build.lib.rules.cpp.Link.LinkTargetType;
-import com.google.devtools.build.lib.rules.cpp.LinkerInputs.LibraryToLink;
 import com.google.devtools.build.lib.rules.cpp.LinkerInputs.SolibLibraryToLink;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.Type;
@@ -341,8 +340,8 @@
      *
      * Note that some target platforms do not require shared library code to be PIC.
      */
-    ImmutableList<LibraryToLink> precompiledStaticLibraries =
-        ImmutableList.<LibraryToLink>builder()
+    ImmutableList<LinkerInputs.LibraryToLink> precompiledStaticLibraries =
+        ImmutableList.<LinkerInputs.LibraryToLink>builder()
             .addAll(
                 LinkerInputs.opaqueLibrariesToLink(
                     ArtifactCategory.STATIC_LIBRARY, precompiledFiles.getStaticLibraries()))
@@ -352,8 +351,8 @@
                     precompiledFiles.getAlwayslinkStaticLibraries()))
             .build();
 
-    ImmutableList<LibraryToLink> precompiledPicStaticLibraries =
-        ImmutableList.<LibraryToLink>builder()
+    ImmutableList<LinkerInputs.LibraryToLink> precompiledPicStaticLibraries =
+        ImmutableList.<LinkerInputs.LibraryToLink>builder()
             .addAll(
                 LinkerInputs.opaqueLibrariesToLink(
                     ArtifactCategory.STATIC_LIBRARY, precompiledFiles.getPicStaticLibraries()))
@@ -363,7 +362,7 @@
                     precompiledFiles.getPicAlwayslinkLibraries()))
             .build();
 
-    List<LibraryToLink> dynamicLibraries =
+    List<LinkerInputs.LibraryToLink> dynamicLibraries =
         ImmutableList.copyOf(
             Iterables.transform(
                 precompiledFiles.getSharedLibraries(),
@@ -384,8 +383,8 @@
               ccCompilationOutputs,
               featureConfiguration));
     }
-    List<LibraryToLinkWrapper> precompiledLibraries =
-        convertPrecompiledLibrariesToLibraryToLinkWrapper(
+    List<LibraryToLink> precompiledLibraries =
+        convertPrecompiledLibrariesToLibraryToLink(
             ruleContext.getFragment(CppConfiguration.class).forcePic(),
             precompiledStaticLibraries,
             precompiledPicStaticLibraries,
@@ -396,19 +395,19 @@
           ruleContext, ccLinkingOutputs, precompiledLibraries);
     }
 
-    ImmutableList<LibraryToLinkWrapper> libraryToLinkWrappers =
-        createLibraryToLinkWrappersList(
+    ImmutableList<LibraryToLink> libraryToLinks =
+        createLibrariesToLinkList(
             ccLinkingOutputs.getLibraryToLink(),
             precompiledLibraries,
             ccCompilationOutputs.isEmpty());
 
     CcLinkingContext ccLinkingContext =
-        linkingHelper.buildCcLinkingContextFromLibraryToLinkWrappers(
-            neverLink ? ImmutableList.of() : libraryToLinkWrappers,
+        linkingHelper.buildCcLinkingContextFromLibrariesToLink(
+            neverLink ? ImmutableList.of() : libraryToLinks,
             compilationInfo.getCcCompilationContext());
     CcNativeLibraryProvider ccNativeLibraryProvider =
         CppHelper.collectNativeCcLibraries(
-            ruleContext.getPrerequisites("deps", Mode.TARGET), libraryToLinkWrappers);
+            ruleContext.getPrerequisites("deps", Mode.TARGET), libraryToLinks);
 
     /*
      * We always generate a static library, even if there aren't any source files.
@@ -421,7 +420,7 @@
 
     NestedSetBuilder<Artifact> filesBuilder = NestedSetBuilder.stableOrder();
     if (!ccLinkingOutputs.isEmpty()) {
-      LibraryToLinkWrapper artifactsToBuild = ccLinkingOutputs.getLibraryToLink();
+      LibraryToLink artifactsToBuild = ccLinkingOutputs.getLibraryToLink();
       if (artifactsToBuild.getStaticLibrary() != null) {
         filesBuilder.add(artifactsToBuild.getStaticLibrary());
       }
@@ -468,16 +467,14 @@
     Runfiles.Builder defaultRunfiles =
         new Runfiles.Builder(ruleContext.getWorkspaceName())
             .merge(runfiles)
-            .addArtifacts(
-                LibraryToLinkWrapper.getDynamicLibrariesForRuntime(
-                    !neverLink, libraryToLinkWrappers));
+            .addArtifacts(LibraryToLink.getDynamicLibrariesForRuntime(!neverLink, libraryToLinks));
 
     Runfiles.Builder dataRunfiles =
         new Runfiles.Builder(ruleContext.getWorkspaceName())
             .merge(runfiles)
             .addArtifacts(
-                LibraryToLinkWrapper.getDynamicLibrariesForRuntime(
-                    /* linkingStatically= */ false, libraryToLinkWrappers));
+                LibraryToLink.getDynamicLibrariesForRuntime(
+                    /* linkingStatically= */ false, libraryToLinks));
 
     @SuppressWarnings("unchecked")
     CppDebugFileProvider cppDebugFileProvider =
@@ -682,12 +679,12 @@
     return outputGroups.build();
   }
 
-  private static ImmutableList<LibraryToLinkWrapper> createLibraryToLinkWrappersList(
-      @Nullable LibraryToLinkWrapper outputLibrary,
-      List<LibraryToLinkWrapper> precompiledLibraries,
+  private static ImmutableList<LibraryToLink> createLibrariesToLinkList(
+      @Nullable LibraryToLink outputLibrary,
+      List<LibraryToLink> precompiledLibraries,
       boolean ccCompilationOutputsIsEmpty) {
-    ImmutableList.Builder<LibraryToLinkWrapper> libraryToLinkWrappers = ImmutableList.builder();
-    libraryToLinkWrappers.addAll(precompiledLibraries);
+    ImmutableList.Builder<LibraryToLink> librariesToLink = ImmutableList.builder();
+    librariesToLink.addAll(precompiledLibraries);
 
     // For cc_library if it contains precompiled libraries we link them. If it contains normal
     // sources we link them as well, if it doesn't contain normal sources, then we don't do
@@ -699,11 +696,11 @@
             && isContentsOfCcLinkingOutputsImplicitlyCreated(
                 ccCompilationOutputsIsEmpty, outputLibrary == null))) {
       if (outputLibrary != null) {
-        libraryToLinkWrappers.add(outputLibrary);
+        librariesToLink.add(outputLibrary);
       }
     }
 
-    return libraryToLinkWrappers.build();
+    return librariesToLink.build();
   }
 
   private static boolean isContentsOfCcLinkingOutputsImplicitlyCreated(
@@ -711,100 +708,100 @@
     return ccCompilationOutputsIsEmpty && !ccLinkingOutputsIsEmpty;
   }
 
-  private static List<LibraryToLinkWrapper> convertPrecompiledLibrariesToLibraryToLinkWrapper(
+  private static List<LibraryToLink> convertPrecompiledLibrariesToLibraryToLink(
       boolean forcePic,
-      List<LibraryToLink> staticLibraries,
-      List<LibraryToLink> picStaticLibraries,
-      List<LibraryToLink> dynamicLibrariesForRuntime) {
-    ImmutableList.Builder<LibraryToLinkWrapper> libraryToLinkWrappers = ImmutableList.builder();
+      List<LinkerInputs.LibraryToLink> staticLibraries,
+      List<LinkerInputs.LibraryToLink> picStaticLibraries,
+      List<LinkerInputs.LibraryToLink> dynamicLibrariesForRuntime) {
+    ImmutableList.Builder<LibraryToLink> librariesToLink = ImmutableList.builder();
 
     Set<String> identifiersUsed = new HashSet<>();
     // Here we hae an O(n^2) algorithm, the size of the inputs is never big though, we only work
     // here with the local libraries, none of the libraries of the transitive closure.
-    for (LibraryToLink staticLibrary : staticLibraries) {
-      LibraryToLinkWrapper.Builder libraryToLinkWrapperBuilder = LibraryToLinkWrapper.builder();
+    for (LinkerInputs.LibraryToLink staticLibrary : staticLibraries) {
+      LibraryToLink.Builder libraryToLinkBuilder = LibraryToLink.builder();
       String identifier = staticLibrary.getLibraryIdentifier();
-      libraryToLinkWrapperBuilder.setLibraryIdentifier(identifier);
-      List<LibraryToLink> sameIdentifierPicStaticLibraries =
+      libraryToLinkBuilder.setLibraryIdentifier(identifier);
+      List<LinkerInputs.LibraryToLink> sameIdentifierPicStaticLibraries =
           picStaticLibraries.stream()
               .filter(x -> x.getLibraryIdentifier().equals(identifier))
               .collect(ImmutableList.toImmutableList());
       boolean hadPic = false;
       if (!sameIdentifierPicStaticLibraries.isEmpty()) {
         hadPic = true;
-        libraryToLinkWrapperBuilder.setPicStaticLibrary(
+        libraryToLinkBuilder.setPicStaticLibrary(
             sameIdentifierPicStaticLibraries.get(0).getArtifact());
       }
       if (!forcePic || !hadPic) {
-        libraryToLinkWrapperBuilder.setStaticLibrary(staticLibrary.getArtifact());
+        libraryToLinkBuilder.setStaticLibrary(staticLibrary.getArtifact());
       }
-      List<LibraryToLink> sameIdentifierDynamicLibraries =
+      List<LinkerInputs.LibraryToLink> sameIdentifierDynamicLibraries =
           dynamicLibrariesForRuntime.stream()
               .filter(x -> x.getLibraryIdentifier().equals(identifier))
               .collect(ImmutableList.toImmutableList());
       if (!sameIdentifierDynamicLibraries.isEmpty()) {
-        LibraryToLink dynamicLibrary = sameIdentifierDynamicLibraries.get(0);
-        libraryToLinkWrapperBuilder.setDynamicLibrary(dynamicLibrary.getArtifact());
+        LinkerInputs.LibraryToLink dynamicLibrary = sameIdentifierDynamicLibraries.get(0);
+        libraryToLinkBuilder.setDynamicLibrary(dynamicLibrary.getArtifact());
         if (dynamicLibrary instanceof SolibLibraryToLink) {
-          libraryToLinkWrapperBuilder.setResolvedSymlinkDynamicLibrary(
+          libraryToLinkBuilder.setResolvedSymlinkDynamicLibrary(
               dynamicLibrary.getOriginalLibraryArtifact());
         }
       }
-      libraryToLinkWrapperBuilder.setAlwayslink(
+      libraryToLinkBuilder.setAlwayslink(
           staticLibrary.getArtifactCategory() == ArtifactCategory.ALWAYSLINK_STATIC_LIBRARY);
       identifiersUsed.add(identifier);
-      libraryToLinkWrappers.add(libraryToLinkWrapperBuilder.build());
+      librariesToLink.add(libraryToLinkBuilder.build());
     }
 
-    for (LibraryToLink picStaticLibrary : picStaticLibraries) {
+    for (LinkerInputs.LibraryToLink picStaticLibrary : picStaticLibraries) {
       String identifier = picStaticLibrary.getLibraryIdentifier();
       if (identifiersUsed.contains(identifier)) {
         continue;
       }
-      LibraryToLinkWrapper.Builder libraryToLinkWrapperBuilder = LibraryToLinkWrapper.builder();
-      libraryToLinkWrapperBuilder.setPicStaticLibrary(picStaticLibrary.getArtifact());
-      libraryToLinkWrapperBuilder.setLibraryIdentifier(identifier);
-      List<LibraryToLink> sameIdentifierDynamicLibraries =
+      LibraryToLink.Builder libraryToLinkBuilder = LibraryToLink.builder();
+      libraryToLinkBuilder.setPicStaticLibrary(picStaticLibrary.getArtifact());
+      libraryToLinkBuilder.setLibraryIdentifier(identifier);
+      List<LinkerInputs.LibraryToLink> sameIdentifierDynamicLibraries =
           dynamicLibrariesForRuntime.stream()
               .filter(x -> x.getLibraryIdentifier().equals(identifier))
               .collect(ImmutableList.toImmutableList());
       if (!sameIdentifierDynamicLibraries.isEmpty()) {
-        LibraryToLink dynamicLibrary = sameIdentifierDynamicLibraries.get(0);
-        libraryToLinkWrapperBuilder.setDynamicLibrary(dynamicLibrary.getArtifact());
+        LinkerInputs.LibraryToLink dynamicLibrary = sameIdentifierDynamicLibraries.get(0);
+        libraryToLinkBuilder.setDynamicLibrary(dynamicLibrary.getArtifact());
         if (dynamicLibrary instanceof SolibLibraryToLink) {
-          libraryToLinkWrapperBuilder.setResolvedSymlinkDynamicLibrary(
+          libraryToLinkBuilder.setResolvedSymlinkDynamicLibrary(
               dynamicLibrary.getOriginalLibraryArtifact());
         }
       }
-      libraryToLinkWrapperBuilder.setAlwayslink(
+      libraryToLinkBuilder.setAlwayslink(
           picStaticLibrary.getArtifactCategory() == ArtifactCategory.ALWAYSLINK_STATIC_LIBRARY);
       identifiersUsed.add(identifier);
-      libraryToLinkWrappers.add(libraryToLinkWrapperBuilder.build());
+      librariesToLink.add(libraryToLinkBuilder.build());
     }
 
-    for (LibraryToLink dynamicLibrary : dynamicLibrariesForRuntime) {
+    for (LinkerInputs.LibraryToLink dynamicLibrary : dynamicLibrariesForRuntime) {
       String identifier = dynamicLibrary.getLibraryIdentifier();
       if (identifiersUsed.contains(identifier)) {
         continue;
       }
-      LibraryToLinkWrapper.Builder libraryToLinkWrapperBuilder = LibraryToLinkWrapper.builder();
-      libraryToLinkWrapperBuilder.setDynamicLibrary(dynamicLibrary.getArtifact());
-      libraryToLinkWrapperBuilder.setLibraryIdentifier(identifier);
+      LibraryToLink.Builder libraryToLinkBuilder = LibraryToLink.builder();
+      libraryToLinkBuilder.setDynamicLibrary(dynamicLibrary.getArtifact());
+      libraryToLinkBuilder.setLibraryIdentifier(identifier);
       if (dynamicLibrary instanceof SolibLibraryToLink) {
-        libraryToLinkWrapperBuilder.setResolvedSymlinkDynamicLibrary(
+        libraryToLinkBuilder.setResolvedSymlinkDynamicLibrary(
             dynamicLibrary.getOriginalLibraryArtifact());
       }
-      libraryToLinkWrappers.add(libraryToLinkWrapperBuilder.build());
+      librariesToLink.add(libraryToLinkBuilder.build());
     }
-    return libraryToLinkWrappers.build();
+    return librariesToLink.build();
   }
 
   private static void checkIfLinkOutputsCollidingWithPrecompiledFiles(
       RuleContext ruleContext,
       CcLinkingOutputs ccLinkingOutputs,
-      List<LibraryToLinkWrapper> precompiledLibraries) {
+      List<LibraryToLink> precompiledLibraries) {
     String identifier = ccLinkingOutputs.getLibraryToLink().getLibraryIdentifier();
-    for (LibraryToLinkWrapper precompiledLibrary : precompiledLibraries) {
+    for (LibraryToLink precompiledLibrary : precompiledLibraries) {
       if (identifier.equals(precompiledLibrary.getLibraryIdentifier())) {
         ruleContext.ruleError(
             "Can't put library with identifier '"
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingHelper.java
index ea32f44..47086bd 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingHelper.java
@@ -36,13 +36,12 @@
 import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.ExpansionException;
 import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.FeatureConfiguration;
 import com.google.devtools.build.lib.rules.cpp.CcToolchainVariables.VariablesExtension;
-import com.google.devtools.build.lib.rules.cpp.LibraryToLinkWrapper.CcLinkingContext;
-import com.google.devtools.build.lib.rules.cpp.LibraryToLinkWrapper.CcLinkingContext.Linkstamp;
+import com.google.devtools.build.lib.rules.cpp.LibraryToLink.CcLinkingContext;
+import com.google.devtools.build.lib.rules.cpp.LibraryToLink.CcLinkingContext.Linkstamp;
 import com.google.devtools.build.lib.rules.cpp.Link.LinkTargetType;
 import com.google.devtools.build.lib.rules.cpp.Link.LinkerOrArchiver;
 import com.google.devtools.build.lib.rules.cpp.Link.LinkingMode;
 import com.google.devtools.build.lib.rules.cpp.Link.Picness;
-import com.google.devtools.build.lib.rules.cpp.LinkerInputs.LibraryToLink;
 import com.google.devtools.build.lib.skylarkbuildapi.cpp.LinkingInfoApi;
 import com.google.devtools.build.lib.vfs.FileSystemUtils;
 import com.google.devtools.build.lib.vfs.PathFragment;
@@ -342,8 +341,8 @@
     return ccLinkingOutputs;
   }
 
-  public CcLinkingContext buildCcLinkingContextFromLibraryToLinkWrappers(
-      ImmutableCollection<LibraryToLinkWrapper> libraryToLinkWrappers,
+  public CcLinkingContext buildCcLinkingContextFromLibrariesToLink(
+      ImmutableCollection<LibraryToLink> libraryToLinks,
       CcCompilationContext ccCompilationContext) {
     NestedSetBuilder<Linkstamp> linkstampBuilder = NestedSetBuilder.stableOrder();
     for (Artifact linkstamp : linkstamps.build()) {
@@ -367,9 +366,7 @@
                           CcLinkingContext.LinkOptions.of(
                               linkopts, ruleContext.getSymbolGenerator())))
               .addLibraries(
-                  NestedSetBuilder.<LibraryToLinkWrapper>linkOrder()
-                      .addAll(libraryToLinkWrappers)
-                      .build())
+                  NestedSetBuilder.<LibraryToLink>linkOrder().addAll(libraryToLinks).build())
               .addNonCodeInputs(
                   NestedSetBuilder.<Artifact>linkOrder().addAll(nonCodeLinkerInputs).build())
               .addLinkstamps(linkstampBuilder.build())
@@ -403,7 +400,7 @@
         staticLinkType.linkerOrArchiver() == LinkerOrArchiver.ARCHIVER,
         "can only handle static links");
 
-    LibraryToLinkWrapper.Builder libraryToLinkBuilder = LibraryToLinkWrapper.builder();
+    LibraryToLink.Builder libraryToLinkBuilder = LibraryToLink.builder();
     boolean usePicForBinaries = CppHelper.usePicForBinaries(ccToolchain, featureConfiguration);
     boolean usePicForDynamicLibs = ccToolchain.usePicForDynamicLibraries(featureConfiguration);
 
@@ -482,7 +479,7 @@
   }
 
   private void createNoPicAndPicStaticLibraries(
-      LibraryToLinkWrapper.Builder libraryToLinkBuilder,
+      LibraryToLink.Builder libraryToLinkBuilder,
       boolean usePicForBinaries,
       boolean usePicForDynamicLibs,
       String libraryIdentifier,
@@ -519,7 +516,7 @@
     }
 
     if (createNoPicAction) {
-      LibraryToLink staticLibrary =
+      LinkerInputs.LibraryToLink staticLibrary =
           registerActionForStaticLibrary(
                   staticLinkType, ccOutputs, /* usePic= */ false, libraryIdentifier)
               .getOutputLibrary();
@@ -544,7 +541,7 @@
                 ? LinkTargetType.ALWAYS_LINK_PIC_STATIC_LIBRARY
                 : LinkTargetType.PIC_STATIC_LIBRARY;
       }
-      LibraryToLink picStaticLibrary =
+      LinkerInputs.LibraryToLink picStaticLibrary =
           registerActionForStaticLibrary(
                   linkTargetTypeUsedForNaming, ccOutputs, /* usePic= */ true, libraryIdentifier)
               .getOutputLibrary();
@@ -584,7 +581,7 @@
 
   private boolean createDynamicLibrary(
       CcLinkingOutputs.Builder ccLinkingOutputs,
-      LibraryToLinkWrapper.Builder libraryToLinkBuilder,
+      LibraryToLink.Builder libraryToLinkBuilder,
       boolean usePic,
       String libraryIdentifier,
       CcCompilationOutputs ccOutputs)
@@ -670,8 +667,8 @@
 
     if (shouldLinkTransitively) {
       CcLinkingContext ccLinkingContext = CcLinkingContext.merge(ccLinkingContexts);
-      List<LibraryToLink> libraries =
-          LibraryToLinkWrapper.convertLibraryToLinkWrapperListToLibraryToLinkList(
+      List<LinkerInputs.LibraryToLink> libraries =
+          LibraryToLink.convertLibraryToLinkListToLibraryToLinkList(
               ccLinkingContext.getLibraries(),
               linkingMode != LinkingMode.DYNAMIC,
               dynamicLinkType.isDynamicLibrary());
@@ -710,8 +707,8 @@
     ccLinkingOutputs.addLinkActionInputs(dynamicLinkAction.getInputs());
     actionConstructionContext.registerAction(dynamicLinkAction);
 
-    LibraryToLink dynamicLibrary = dynamicLinkAction.getOutputLibrary();
-    LibraryToLink interfaceLibrary = dynamicLinkAction.getInterfaceOutputLibrary();
+    LinkerInputs.LibraryToLink dynamicLibrary = dynamicLinkAction.getOutputLibrary();
+    LinkerInputs.LibraryToLink interfaceLibrary = dynamicLinkAction.getInterfaceOutputLibrary();
 
     // If shared library has neverlink=1, then leave it untouched. Otherwise,
     // create a mangled symlink for it and from now on reference it through
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingOutputs.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingOutputs.java
index 2020700..3d8a689 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingOutputs.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingOutputs.java
@@ -18,7 +18,6 @@
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSetMultimap;
 import com.google.devtools.build.lib.actions.Artifact;
-import com.google.devtools.build.lib.rules.cpp.LinkerInputs.LibraryToLink;
 import com.google.devtools.build.lib.skylarkbuildapi.cpp.CcLinkingOutputsApi;
 import com.google.devtools.build.lib.vfs.FileSystemUtils;
 import javax.annotation.Nullable;
@@ -28,13 +27,13 @@
 
   public static final CcLinkingOutputs EMPTY = new Builder().build();
 
-  @Nullable private final LibraryToLinkWrapper libraryToLink;
+  @Nullable private final LibraryToLink libraryToLink;
 
   private final ImmutableList<LtoBackendArtifacts> allLtoArtifacts;
   private final ImmutableList<Artifact> linkActionInputs;
 
   private CcLinkingOutputs(
-      LibraryToLinkWrapper libraryToLink,
+      LibraryToLink libraryToLink,
       ImmutableList<LtoBackendArtifacts> allLtoArtifacts,
       ImmutableList<Artifact> linkActionInputs) {
     this.libraryToLink = libraryToLink;
@@ -44,7 +43,7 @@
 
   @Override
   @Nullable
-  public LibraryToLinkWrapper getLibraryToLink() {
+  public LibraryToLink getLibraryToLink() {
     return libraryToLink;
   }
 
@@ -64,11 +63,11 @@
    * Gathers up a map from library identifiers to sets of LibraryToLink which share that library
    * identifier.
    */
-  public static ImmutableSetMultimap<String, LibraryToLink> getLibrariesByIdentifier(
-      Iterable<LibraryToLink> inputs) {
-    ImmutableSetMultimap.Builder<String, LibraryToLink> result =
+  public static ImmutableSetMultimap<String, LinkerInputs.LibraryToLink> getLibrariesByIdentifier(
+      Iterable<LinkerInputs.LibraryToLink> inputs) {
+    ImmutableSetMultimap.Builder<String, LinkerInputs.LibraryToLink> result =
         new ImmutableSetMultimap.Builder<>();
-    for (LibraryToLink library : inputs) {
+    for (LinkerInputs.LibraryToLink library : inputs) {
       Preconditions.checkNotNull(library.getLibraryIdentifier());
       result.put(library.getLibraryIdentifier(), library);
     }
@@ -97,7 +96,7 @@
   }
 
   public static final class Builder {
-    private LibraryToLinkWrapper libraryToLink;
+    private LibraryToLink libraryToLink;
 
     // TODO(plf): Return a list of debug artifacts instead of lto back end artifacts and in that
     // same list return the .pdb file for Windows.
@@ -109,7 +108,7 @@
       return new CcLinkingOutputs(libraryToLink, allLtoArtifacts.build(), linkActionInputs.build());
     }
 
-    public Builder setLibraryToLink(LibraryToLinkWrapper libraryToLink) {
+    public Builder setLibraryToLink(LibraryToLink libraryToLink) {
       this.libraryToLink = libraryToLink;
       return this;
     }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java
index 89b57ad..79f7fd9 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java
@@ -52,7 +52,7 @@
 import com.google.devtools.build.lib.rules.cpp.CcToolchainVariables.Expandable;
 import com.google.devtools.build.lib.rules.cpp.CcToolchainVariables.StringValueParser;
 import com.google.devtools.build.lib.rules.cpp.CppActionConfigs.CppPlatform;
-import com.google.devtools.build.lib.rules.cpp.LibraryToLinkWrapper.CcLinkingContext;
+import com.google.devtools.build.lib.rules.cpp.LibraryToLink.CcLinkingContext;
 import com.google.devtools.build.lib.skylarkbuildapi.cpp.CcInfoApi;
 import com.google.devtools.build.lib.skylarkbuildapi.cpp.CcModuleApi;
 import com.google.devtools.build.lib.skylarkinterface.StarlarkContext;
@@ -86,7 +86,7 @@
         FeatureConfiguration,
         CcCompilationContext,
         CcLinkingContext,
-        LibraryToLinkWrapper,
+        LibraryToLink,
         CcToolchainVariables,
         SkylarkRuleContext,
         CcToolchainConfigInfo> {
@@ -318,7 +318,7 @@
   }
 
   /**
-   * This method returns a {@link LibraryToLinkWrapper} object that will be used to contain linking
+   * This method returns a {@link LibraryToLink} object that will be used to contain linking
    * artifacts and information for a single library that will later be used by a linking action.
    *
    * @param actionsObject SkylarkActionFactory
@@ -333,7 +333,7 @@
    * @throws InterruptedException
    */
   @Override
-  public LibraryToLinkWrapper createLibraryLinkerInput(
+  public LibraryToLink createLibraryLinkerInput(
       Object actionsObject,
       Object featureConfigurationObject,
       Object ccToolchainProviderObject,
@@ -457,7 +457,7 @@
           "Must pass at least one of the following parameters: static_library, pic_static_library, "
               + "dynamic_library and interface_library.");
     }
-    return LibraryToLinkWrapper.builder()
+    return LibraryToLink.builder()
         .setLibraryIdentifier(CcLinkingOutputs.libraryIdentifierOf(notNullArtifactForIdentifier))
         .setStaticLibrary(staticLibrary)
         .setPicStaticLibrary(picStaticLibrary)
@@ -538,7 +538,7 @@
       StarlarkContext context)
       throws EvalException {
     @SuppressWarnings("unchecked")
-    SkylarkList<LibraryToLinkWrapper> librariesToLink =
+    SkylarkList<LibraryToLink> librariesToLink =
         nullIfNone(librariesToLinkObject, SkylarkList.class);
     @SuppressWarnings("unchecked")
     SkylarkList<String> userLinkFlags = nullIfNone(userLinkFlagsObject, SkylarkList.class);
@@ -698,16 +698,16 @@
             .setNeverLink(neverLink);
     try {
       CcLinkingOutputs ccLinkingOutputs = CcLinkingOutputs.EMPTY;
-      ImmutableList<LibraryToLinkWrapper> libraryToLinkWrapper = ImmutableList.of();
+      ImmutableList<LibraryToLink> libraryToLink = ImmutableList.of();
       if (!ccCompilationOutputs.isEmpty()) {
         ccLinkingOutputs = helper.link(ccCompilationOutputs);
         if (!neverLink && !ccLinkingOutputs.isEmpty()) {
-          libraryToLinkWrapper = ImmutableList.of(ccLinkingOutputs.getLibraryToLink());
+          libraryToLink = ImmutableList.of(ccLinkingOutputs.getLibraryToLink());
         }
       }
       CcLinkingContext ccLinkingContext =
-          helper.buildCcLinkingContextFromLibraryToLinkWrappers(
-              libraryToLinkWrapper, CcCompilationContext.EMPTY);
+          helper.buildCcLinkingContextFromLibrariesToLink(
+              libraryToLink, CcCompilationContext.EMPTY);
       return new LinkingInfo(ccLinkingContext, ccLinkingOutputs);
     } catch (RuleErrorException e) {
       throw new EvalException(ruleContext.getRule().getLocation(), e);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcNativeLibraryProvider.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcNativeLibraryProvider.java
index dee0276..b392cd7 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcNativeLibraryProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcNativeLibraryProvider.java
@@ -26,9 +26,9 @@
 @Immutable
 @AutoCodec
 public final class CcNativeLibraryProvider implements TransitiveInfoProvider {
-  private final NestedSet<LibraryToLinkWrapper> transitiveCcNativeLibraries;
+  private final NestedSet<LibraryToLink> transitiveCcNativeLibraries;
 
-  public CcNativeLibraryProvider(NestedSet<LibraryToLinkWrapper> transitiveCcNativeLibraries) {
+  public CcNativeLibraryProvider(NestedSet<LibraryToLink> transitiveCcNativeLibraries) {
     this.transitiveCcNativeLibraries = transitiveCcNativeLibraries;
   }
 
@@ -38,7 +38,7 @@
    *
    * <p>In effect, returns all dynamic library (.so) artifacts provided by the transitive closure.
    */
-  public NestedSet<LibraryToLinkWrapper> getTransitiveCcNativeLibraries() {
+  public NestedSet<LibraryToLink> getTransitiveCcNativeLibraries() {
     return transitiveCcNativeLibraries;
   }
 }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java
index 37ec6bc..a15f078 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java
@@ -33,7 +33,7 @@
 import com.google.devtools.build.lib.packages.RuleErrorConsumer;
 import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.FeatureConfiguration;
 import com.google.devtools.build.lib.rules.cpp.CppConfiguration.Tool;
-import com.google.devtools.build.lib.rules.cpp.LibraryToLinkWrapper.CcLinkingContext;
+import com.google.devtools.build.lib.rules.cpp.LibraryToLink.CcLinkingContext;
 import com.google.devtools.build.lib.rules.cpp.Link.LinkingMode;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.skylarkbuildapi.cpp.CcToolchainProviderApi;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java
index 2a1a466..3379d31 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java
@@ -55,8 +55,8 @@
 import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException;
 import com.google.devtools.build.lib.packages.RuleErrorConsumer;
 import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.FeatureConfiguration;
-import com.google.devtools.build.lib.rules.cpp.LibraryToLinkWrapper.CcLinkingContext;
-import com.google.devtools.build.lib.rules.cpp.LibraryToLinkWrapper.CcLinkingContext.Linkstamp;
+import com.google.devtools.build.lib.rules.cpp.LibraryToLink.CcLinkingContext;
+import com.google.devtools.build.lib.rules.cpp.LibraryToLink.CcLinkingContext.Linkstamp;
 import com.google.devtools.build.lib.rules.cpp.Link.LinkTargetType;
 import com.google.devtools.build.lib.rules.proto.ProtoInfo;
 import com.google.devtools.build.lib.shell.ShellUtils;
@@ -849,8 +849,8 @@
   }
 
   public static CcNativeLibraryProvider collectNativeCcLibraries(
-      List<? extends TransitiveInfoCollection> deps, List<LibraryToLinkWrapper> libraries) {
-    NestedSetBuilder<LibraryToLinkWrapper> result = NestedSetBuilder.linkOrder();
+      List<? extends TransitiveInfoCollection> deps, List<LibraryToLink> libraries) {
+    NestedSetBuilder<LibraryToLink> result = NestedSetBuilder.linkOrder();
     result.addAll(libraries);
     for (CcNativeLibraryProvider dep :
         AnalysisUtils.getProviders(deps, CcNativeLibraryProvider.class)) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java
index 1d9ec67..fe51e2b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java
@@ -46,12 +46,11 @@
 import com.google.devtools.build.lib.rules.cpp.CppConfiguration.Tool;
 import com.google.devtools.build.lib.rules.cpp.CppLinkAction.LinkArtifactFactory;
 import com.google.devtools.build.lib.rules.cpp.LibrariesToLinkCollector.CollectedLibrariesToLink;
-import com.google.devtools.build.lib.rules.cpp.LibraryToLinkWrapper.CcLinkingContext;
-import com.google.devtools.build.lib.rules.cpp.LibraryToLinkWrapper.CcLinkingContext.Linkstamp;
+import com.google.devtools.build.lib.rules.cpp.LibraryToLink.CcLinkingContext;
+import com.google.devtools.build.lib.rules.cpp.LibraryToLink.CcLinkingContext.Linkstamp;
 import com.google.devtools.build.lib.rules.cpp.Link.LinkTargetType;
 import com.google.devtools.build.lib.rules.cpp.Link.LinkerOrArchiver;
 import com.google.devtools.build.lib.rules.cpp.Link.LinkingMode;
-import com.google.devtools.build.lib.rules.cpp.LinkerInputs.LibraryToLink;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.vfs.FileSystemUtils;
 import com.google.devtools.build.lib.vfs.PathFragment;
@@ -112,9 +111,9 @@
   // Keep these in sync with {@link Context}.
   private final Set<LinkerInput> objectFiles = new LinkedHashSet<>();
   private final Set<Artifact> nonCodeInputs = new LinkedHashSet<>();
-  private final NestedSetBuilder<LibraryToLink> libraries = NestedSetBuilder.linkOrder();
-  private final NestedSetBuilder<LibraryToLinkWrapper> libraryToLinkWrappers =
+  private final NestedSetBuilder<LinkerInputs.LibraryToLink> libraries =
       NestedSetBuilder.linkOrder();
+  private final NestedSetBuilder<LibraryToLink> librariesToLink = NestedSetBuilder.linkOrder();
   private NestedSet<Artifact> linkerFiles = NestedSetBuilder.emptySet(Order.STABLE_ORDER);
   private Artifact runtimeMiddleman;
   private ArtifactCategory toolchainLibrariesType = null;
@@ -220,10 +219,8 @@
     return objectFiles;
   }
 
-  /**
-   * Returns linker inputs that are libraries.
-   */
-  public NestedSetBuilder<LibraryToLink> getLibraries() {
+  /** Returns linker inputs that are libraries. */
+  public NestedSetBuilder<LinkerInputs.LibraryToLink> getLibraries() {
     return libraries;
   }
 
@@ -283,10 +280,12 @@
    * Maps bitcode library files used by the LTO backends to the corresponding minimized bitcode file
    * used as input to the LTO indexing step.
    */
-  private static NestedSet<LibraryToLink> computeLtoIndexingUniqueLibraries(
-      NestedSet<LibraryToLink> originalUniqueLibraries, boolean includeLinkStaticInLtoIndexing) {
-    NestedSetBuilder<LibraryToLink> uniqueLibrariesBuilder = NestedSetBuilder.linkOrder();
-    for (LibraryToLink lib : originalUniqueLibraries) {
+  private static NestedSet<LinkerInputs.LibraryToLink> computeLtoIndexingUniqueLibraries(
+      NestedSet<LinkerInputs.LibraryToLink> originalUniqueLibraries,
+      boolean includeLinkStaticInLtoIndexing) {
+    NestedSetBuilder<LinkerInputs.LibraryToLink> uniqueLibrariesBuilder =
+        NestedSetBuilder.linkOrder();
+    for (LinkerInputs.LibraryToLink lib : originalUniqueLibraries) {
       if (!lib.containsObjectFiles()) {
         uniqueLibrariesBuilder.add(lib);
         continue;
@@ -332,7 +331,7 @@
     if (!ltoCompilationContext.isEmpty()) {
       return true;
     }
-    for (LibraryToLink lib : libraries.build()) {
+    for (LinkerInputs.LibraryToLink lib : libraries.build()) {
       if (!lib.getLtoCompilationContext().isEmpty()) {
         return true;
       }
@@ -410,11 +409,11 @@
 
   private Iterable<LtoBackendArtifacts> createLtoArtifacts(
       PathFragment ltoOutputRootPrefix,
-      NestedSet<LibraryToLink> uniqueLibraries,
+      NestedSet<LinkerInputs.LibraryToLink> uniqueLibraries,
       boolean allowLtoIndexing,
       boolean includeLinkStaticInLtoIndexing) {
     Set<Artifact> compiled = new LinkedHashSet<>();
-    for (LibraryToLink lib : uniqueLibraries) {
+    for (LinkerInputs.LibraryToLink lib : uniqueLibraries) {
       compiled.addAll(lib.getLtoCompilationContext().getBitcodeFiles());
     }
 
@@ -425,7 +424,7 @@
     // statically linked, so we need to look at includeLinkStaticInLtoIndexing to decide whether
     // to include its objects in the LTO indexing for this target.
     if (includeLinkStaticInLtoIndexing) {
-      for (LibraryToLink lib : uniqueLibraries) {
+      for (LinkerInputs.LibraryToLink lib : uniqueLibraries) {
         if (!lib.containsObjectFiles()) {
           continue;
         }
@@ -443,7 +442,7 @@
     }
 
     ImmutableList.Builder<LtoBackendArtifacts> ltoOutputs = ImmutableList.builder();
-    for (LibraryToLink lib : uniqueLibraries) {
+    for (LinkerInputs.LibraryToLink lib : uniqueLibraries) {
       if (!lib.containsObjectFiles()) {
         continue;
       }
@@ -557,19 +556,18 @@
     }
   }
 
-  private List<LibraryToLink> convertLibraryToLinkWrapperListToLibraryToLinkList(
-      NestedSet<LibraryToLinkWrapper> libraryToLinkWrappers) {
-    ImmutableList.Builder<LibraryToLink> librariesToLink = ImmutableList.builder();
-    for (LibraryToLinkWrapper libraryToLinkWrapper : libraryToLinkWrappers) {
-      LibraryToLink staticLibraryToLink =
-          libraryToLinkWrapper.getStaticLibrary() == null
+  private List<LinkerInputs.LibraryToLink> convertLibraryToLinkListToLibraryToLinkList(
+      NestedSet<LibraryToLink> librariesToLink) {
+    ImmutableList.Builder<LinkerInputs.LibraryToLink> librariesToLinkBuilder =
+        ImmutableList.builder();
+    for (LibraryToLink libraryToLink : librariesToLink) {
+      LinkerInputs.LibraryToLink staticLibraryToLink =
+          libraryToLink.getStaticLibrary() == null ? null : libraryToLink.getStaticLibraryToLink();
+      LinkerInputs.LibraryToLink picStaticLibraryToLink =
+          libraryToLink.getPicStaticLibrary() == null
               ? null
-              : libraryToLinkWrapper.getStaticLibraryToLink();
-      LibraryToLink picStaticLibraryToLink =
-          libraryToLinkWrapper.getPicStaticLibrary() == null
-              ? null
-              : libraryToLinkWrapper.getPicStaticLibraryToLink();
-      LibraryToLink libraryToLinkToUse = null;
+              : libraryToLink.getPicStaticLibraryToLink();
+      LinkerInputs.LibraryToLink libraryToLinkToUse = null;
       if (linkingMode == LinkingMode.STATIC) {
         if (linkType.isDynamicLibrary()) {
           if (picStaticLibraryToLink != null) {
@@ -586,31 +584,30 @@
         }
       }
       if (libraryToLinkToUse == null) {
-        if (libraryToLinkWrapper.getInterfaceLibrary() != null) {
-          libraryToLinkToUse = libraryToLinkWrapper.getInterfaceLibraryToLink();
-        } else if (libraryToLinkWrapper.getDynamicLibrary() != null) {
-          libraryToLinkToUse = libraryToLinkWrapper.getDynamicLibraryToLink();
+        if (libraryToLink.getInterfaceLibrary() != null) {
+          libraryToLinkToUse = libraryToLink.getInterfaceLibraryToLink();
+        } else if (libraryToLink.getDynamicLibrary() != null) {
+          libraryToLinkToUse = libraryToLink.getDynamicLibraryToLink();
         }
       }
       Preconditions.checkNotNull(libraryToLinkToUse);
       checkLibrary(libraryToLinkToUse);
-      librariesToLink.add(libraryToLinkToUse);
+      librariesToLinkBuilder.add(libraryToLinkToUse);
     }
-    return librariesToLink.build();
+    return librariesToLinkBuilder.build();
   }
 
   /** Builds the Action as configured and returns it. */
   public CppLinkAction build() throws InterruptedException {
-    NestedSet<LibraryToLink> originalUniqueLibraries = null;
+    NestedSet<LinkerInputs.LibraryToLink> originalUniqueLibraries = null;
 
-    if (libraryToLinkWrappers.isEmpty()) {
+    if (librariesToLink.isEmpty()) {
       originalUniqueLibraries = libraries.build();
     } else {
       Preconditions.checkState(libraries.isEmpty());
       originalUniqueLibraries =
-          NestedSetBuilder.<LibraryToLink>linkOrder()
-              .addAll(
-                  convertLibraryToLinkWrapperListToLibraryToLinkList(libraryToLinkWrappers.build()))
+          NestedSetBuilder.<LinkerInputs.LibraryToLink>linkOrder()
+              .addAll(convertLibraryToLinkListToLibraryToLinkList(librariesToLink.build()))
               .build();
     }
 
@@ -700,7 +697,7 @@
     // Get the set of object files and libraries containing the correct
     // inputs for this link, depending on whether this is LTO indexing or
     // a native link.
-    NestedSet<LibraryToLink> uniqueLibraries;
+    NestedSet<LinkerInputs.LibraryToLink> uniqueLibraries;
     ImmutableSet<LinkerInput> objectFileInputs;
     ImmutableSet<LinkerInput> linkstampObjectFileInputs;
     if (isLtoIndexing) {
@@ -737,7 +734,7 @@
             .addAll(objectArtifacts)
             .addAll(linkstampObjectArtifacts)
             .build();
-    final LibraryToLink outputLibrary =
+    final LinkerInputs.LibraryToLink outputLibrary =
         linkType.isExecutable()
             ? null
             : LinkerInputs.newInputLibrary(
@@ -752,7 +749,7 @@
                     : LtoCompilationContext.EMPTY,
                 createSharedNonLtoArtifacts(isLtoIndexing),
                 /* mustKeepDebug= */ false);
-    final LibraryToLink interfaceOutputLibrary =
+    final LinkerInputs.LibraryToLink interfaceOutputLibrary =
         (interfaceOutput == null)
             ? null
             : LinkerInputs.newInputLibrary(
@@ -1355,7 +1352,7 @@
     return this;
   }
 
-  private void checkLibrary(LibraryToLink input) {
+  private void checkLibrary(LinkerInputs.LibraryToLink input) {
     String name = input.getArtifact().getFilename();
     Preconditions.checkArgument(
         Link.ARCHIVE_LIBRARY_FILETYPES.matches(name) || Link.SHARED_LIBRARY_FILETYPES.matches(name),
@@ -1368,7 +1365,7 @@
    * library. Note that all directly added libraries are implicitly ordered before all nested sets
    * added with {@link #addLibraries}, even if added in the opposite order.
    */
-  public CppLinkActionBuilder addLibrary(LibraryToLink input) {
+  public CppLinkActionBuilder addLibrary(LinkerInputs.LibraryToLink input) {
     checkLibrary(input);
     libraries.add(input);
     if (input.isMustKeepDebug()) {
@@ -1381,9 +1378,9 @@
    * Adds multiple artifact to the set of inputs. The artifacts must be archives or shared
    * libraries.
    */
-  public CppLinkActionBuilder addLibraries(Iterable<LibraryToLink> inputs) {
-    Preconditions.checkState(libraryToLinkWrappers.isEmpty());
-    for (LibraryToLink input : inputs) {
+  public CppLinkActionBuilder addLibraries(Iterable<LinkerInputs.LibraryToLink> inputs) {
+    Preconditions.checkState(librariesToLink.isEmpty());
+    for (LinkerInputs.LibraryToLink input : inputs) {
       checkLibrary(input);
       if (input.isMustKeepDebug()) {
         mustKeepDebug = true;
@@ -1393,14 +1390,14 @@
     return this;
   }
 
-  public CppLinkActionBuilder addLibraryToLinkWrappers(Iterable<LibraryToLinkWrapper> inputs) {
+  public CppLinkActionBuilder addLibrariesToLink(Iterable<LibraryToLink> inputs) {
     Preconditions.checkState(libraries.isEmpty());
-    for (LibraryToLinkWrapper input : inputs) {
+    for (LibraryToLink input : inputs) {
       if (input.getMustKeepDebug()) {
         mustKeepDebug = true;
       }
     }
-    this.libraryToLinkWrappers.addAll(inputs);
+    this.librariesToLink.addAll(inputs);
     return this;
   }
 
@@ -1472,7 +1469,7 @@
    * #addLibraries}, and {@link #addLinkstamps}.
    */
   public CppLinkActionBuilder addLinkParams(
-      List<LibraryToLink> libraries,
+      List<LinkerInputs.LibraryToLink> libraries,
       List<String> userLinkFlags,
       List<Linkstamp> linkstamps,
       List<Artifact> nonCodeInputs,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/ExtraLinkTimeLibraries.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/ExtraLinkTimeLibraries.java
index 9f53944..ec2ef03 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/ExtraLinkTimeLibraries.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/ExtraLinkTimeLibraries.java
@@ -106,7 +106,7 @@
   public BuildLibraryOutput buildLibraries(
       RuleContext ruleContext, boolean staticMode, boolean forDynamicLibrary)
       throws InterruptedException, RuleErrorException {
-    NestedSetBuilder<LibraryToLinkWrapper> librariesToLink = NestedSetBuilder.linkOrder();
+    NestedSetBuilder<LibraryToLink> librariesToLink = NestedSetBuilder.linkOrder();
     NestedSetBuilder<Artifact> runtimeLibraries = NestedSetBuilder.linkOrder();
     for (ExtraLinkTimeLibrary extraLibrary : getExtraLibraries()) {
       BuildLibraryOutput buildLibraryOutput =
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/ExtraLinkTimeLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/ExtraLinkTimeLibrary.java
index 28722fb..4dc742a 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/ExtraLinkTimeLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/ExtraLinkTimeLibrary.java
@@ -33,16 +33,16 @@
 
   /** Output of {@link #buildLibraries}. Pair of libraries to link and runtime libraries. */
   class BuildLibraryOutput {
-    public NestedSet<LibraryToLinkWrapper> librariesToLink;
+    public NestedSet<LibraryToLink> librariesToLink;
     public NestedSet<Artifact> runtimeLibraries;
 
     public BuildLibraryOutput(
-        NestedSet<LibraryToLinkWrapper> librariesToLink, NestedSet<Artifact> runtimeLibraries) {
+        NestedSet<LibraryToLink> librariesToLink, NestedSet<Artifact> runtimeLibraries) {
       this.librariesToLink = librariesToLink;
       this.runtimeLibraries = runtimeLibraries;
     }
 
-    public NestedSet<LibraryToLinkWrapper> getLibrariesToLink() {
+    public NestedSet<LibraryToLink> getLibrariesToLink() {
       return librariesToLink;
     }
 
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/LibraryToLinkWrapper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/LibraryToLink.java
similarity index 84%
rename from src/main/java/com/google/devtools/build/lib/rules/cpp/LibraryToLinkWrapper.java
rename to src/main/java/com/google/devtools/build/lib/rules/cpp/LibraryToLink.java
index 02503cb..eb5138d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/LibraryToLinkWrapper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/LibraryToLink.java
@@ -29,10 +29,9 @@
 import com.google.devtools.build.lib.collect.nestedset.NestedSet;
 import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.rules.cpp.LinkerInputs.LibraryToLink;
 import com.google.devtools.build.lib.rules.cpp.LinkerInputs.SolibLibraryToLink;
 import com.google.devtools.build.lib.skylarkbuildapi.cpp.CcLinkingContextApi;
-import com.google.devtools.build.lib.skylarkbuildapi.cpp.LibraryToLinkWrapperApi;
+import com.google.devtools.build.lib.skylarkbuildapi.cpp.LibraryToLinkApi;
 import com.google.devtools.build.lib.syntax.SkylarkList;
 import com.google.devtools.build.lib.util.Fingerprint;
 import com.google.devtools.build.lib.vfs.FileSystemUtils;
@@ -51,23 +50,20 @@
  * dynamic params for executable and dynamic params for dynamic library.
  */
 @AutoValue
-public abstract class LibraryToLinkWrapper implements LibraryToLinkWrapperApi<Artifact> {
+public abstract class LibraryToLink implements LibraryToLinkApi<Artifact> {
 
-  public static List<LibraryToLink> convertLibraryToLinkWrapperListToLibraryToLinkList(
-      NestedSet<LibraryToLinkWrapper> libraryToLinkWrappers,
-      boolean staticMode,
-      boolean forDynamicLibrary) {
-    ImmutableList.Builder<LibraryToLink> librariesToLink = ImmutableList.builder();
-    for (LibraryToLinkWrapper libraryToLinkWrapper : libraryToLinkWrappers) {
-      LibraryToLink staticLibraryToLink =
-          libraryToLinkWrapper.getStaticLibrary() == null
+  public static List<LinkerInputs.LibraryToLink> convertLibraryToLinkListToLibraryToLinkList(
+      NestedSet<LibraryToLink> librariesToLink, boolean staticMode, boolean forDynamicLibrary) {
+    ImmutableList.Builder<LinkerInputs.LibraryToLink> librariesToLinkBuilder =
+        ImmutableList.builder();
+    for (LibraryToLink libraryToLink : librariesToLink) {
+      LinkerInputs.LibraryToLink staticLibraryToLink =
+          libraryToLink.getStaticLibrary() == null ? null : libraryToLink.getStaticLibraryToLink();
+      LinkerInputs.LibraryToLink picStaticLibraryToLink =
+          libraryToLink.getPicStaticLibrary() == null
               ? null
-              : libraryToLinkWrapper.getStaticLibraryToLink();
-      LibraryToLink picStaticLibraryToLink =
-          libraryToLinkWrapper.getPicStaticLibrary() == null
-              ? null
-              : libraryToLinkWrapper.getPicStaticLibraryToLink();
-      LibraryToLink libraryToLinkToUse = null;
+              : libraryToLink.getPicStaticLibraryToLink();
+      LinkerInputs.LibraryToLink libraryToLinkToUse = null;
       if (staticMode) {
         if (forDynamicLibrary) {
           if (picStaticLibraryToLink != null) {
@@ -83,17 +79,17 @@
           }
         }
         if (libraryToLinkToUse == null) {
-          if (libraryToLinkWrapper.getInterfaceLibrary() != null) {
-            libraryToLinkToUse = libraryToLinkWrapper.getInterfaceLibraryToLink();
-          } else if (libraryToLinkWrapper.getDynamicLibrary() != null) {
-            libraryToLinkToUse = libraryToLinkWrapper.getDynamicLibraryToLink();
+          if (libraryToLink.getInterfaceLibrary() != null) {
+            libraryToLinkToUse = libraryToLink.getInterfaceLibraryToLink();
+          } else if (libraryToLink.getDynamicLibrary() != null) {
+            libraryToLinkToUse = libraryToLink.getDynamicLibraryToLink();
           }
         }
       } else {
-        if (libraryToLinkWrapper.getInterfaceLibrary() != null) {
-          libraryToLinkToUse = libraryToLinkWrapper.getInterfaceLibraryToLink();
-        } else if (libraryToLinkWrapper.getDynamicLibrary() != null) {
-          libraryToLinkToUse = libraryToLinkWrapper.getDynamicLibraryToLink();
+        if (libraryToLink.getInterfaceLibrary() != null) {
+          libraryToLinkToUse = libraryToLink.getInterfaceLibraryToLink();
+        } else if (libraryToLink.getDynamicLibrary() != null) {
+          libraryToLinkToUse = libraryToLink.getDynamicLibraryToLink();
         }
         if (libraryToLinkToUse == null) {
           if (forDynamicLibrary) {
@@ -112,9 +108,9 @@
         }
       }
       Preconditions.checkNotNull(libraryToLinkToUse);
-      librariesToLink.add(libraryToLinkToUse);
+      librariesToLinkBuilder.add(libraryToLinkToUse);
     }
-    return librariesToLink.build();
+    return librariesToLinkBuilder.build();
   }
 
   public Artifact getDynamicLibraryForRuntimeOrNull(boolean linkingStatically) {
@@ -242,14 +238,14 @@
       }
     }
 
-    private final NestedSet<LibraryToLinkWrapper> libraries;
+    private final NestedSet<LibraryToLink> libraries;
     private final NestedSet<LinkOptions> userLinkFlags;
     private final NestedSet<Linkstamp> linkstamps;
     private final NestedSet<Artifact> nonCodeInputs;
     private final ExtraLinkTimeLibraries extraLinkTimeLibraries;
 
     public CcLinkingContext(
-        NestedSet<LibraryToLinkWrapper> libraries,
+        NestedSet<LibraryToLink> libraries,
         NestedSet<LinkOptions> userLinkFlags,
         NestedSet<Linkstamp> linkstamps,
         NestedSet<Artifact> nonCodeInputs,
@@ -281,15 +277,15 @@
 
     public List<Artifact> getStaticModeParamsForExecutableLibraries() {
       ImmutableList.Builder<Artifact> libraryListBuilder = ImmutableList.builder();
-      for (LibraryToLinkWrapper libraryToLinkWrapper : getLibraries()) {
-        if (libraryToLinkWrapper.getStaticLibrary() != null) {
-          libraryListBuilder.add(libraryToLinkWrapper.getStaticLibrary());
-        } else if (libraryToLinkWrapper.getPicStaticLibrary() != null) {
-          libraryListBuilder.add(libraryToLinkWrapper.getPicStaticLibrary());
-        } else if (libraryToLinkWrapper.getInterfaceLibrary() != null) {
-          libraryListBuilder.add(libraryToLinkWrapper.getInterfaceLibrary());
+      for (LibraryToLink libraryToLink : getLibraries()) {
+        if (libraryToLink.getStaticLibrary() != null) {
+          libraryListBuilder.add(libraryToLink.getStaticLibrary());
+        } else if (libraryToLink.getPicStaticLibrary() != null) {
+          libraryListBuilder.add(libraryToLink.getPicStaticLibrary());
+        } else if (libraryToLink.getInterfaceLibrary() != null) {
+          libraryListBuilder.add(libraryToLink.getInterfaceLibrary());
         } else {
-          libraryListBuilder.add(libraryToLinkWrapper.getDynamicLibrary());
+          libraryListBuilder.add(libraryToLink.getDynamicLibrary());
         }
       }
       return libraryListBuilder.build();
@@ -297,7 +293,7 @@
 
     public List<Artifact> getStaticModeParamsForDynamicLibraryLibraries() {
       ImmutableList.Builder<Artifact> artifactListBuilder = ImmutableList.builder();
-      for (LibraryToLinkWrapper library : getLibraries()) {
+      for (LibraryToLink library : getLibraries()) {
         if (library.getPicStaticLibrary() != null) {
           artifactListBuilder.add(library.getPicStaticLibrary());
         } else if (library.getStaticLibrary() != null) {
@@ -313,7 +309,7 @@
 
     public List<Artifact> getDynamicModeParamsForExecutableLibraries() {
       ImmutableList.Builder<Artifact> artifactListBuilder = ImmutableList.builder();
-      for (LibraryToLinkWrapper library : getLibraries()) {
+      for (LibraryToLink library : getLibraries()) {
         if (library.getInterfaceLibrary() != null) {
           artifactListBuilder.add(library.getInterfaceLibrary());
         } else if (library.getDynamicLibrary() != null) {
@@ -329,7 +325,7 @@
 
     public List<Artifact> getDynamicModeParamsForDynamicLibraryLibraries() {
       ImmutableList.Builder<Artifact> artifactListBuilder = ImmutableList.builder();
-      for (LibraryToLinkWrapper library : getLibraries()) {
+      for (LibraryToLink library : getLibraries()) {
         if (library.getInterfaceLibrary() != null) {
           artifactListBuilder.add(library.getInterfaceLibrary());
         } else if (library.getDynamicLibrary() != null) {
@@ -344,10 +340,10 @@
     }
 
     public List<Artifact> getDynamicLibrariesForRuntime(boolean linkingStatically) {
-      return LibraryToLinkWrapper.getDynamicLibrariesForRuntime(linkingStatically, libraries);
+      return LibraryToLink.getDynamicLibrariesForRuntime(linkingStatically, libraries);
     }
 
-    public NestedSet<LibraryToLinkWrapper> getLibraries() {
+    public NestedSet<LibraryToLink> getLibraries() {
       return libraries;
     }
 
@@ -357,7 +353,7 @@
     }
 
     @Override
-    public SkylarkList<LibraryToLinkWrapperApi> getSkylarkLibrariesToLink() {
+    public SkylarkList<LibraryToLinkApi> getSkylarkLibrariesToLink() {
       return SkylarkList.createImmutable(libraries.toList());
     }
 
@@ -390,13 +386,13 @@
 
     /** Builder for {@link CcLinkingContext}. */
     public static class Builder {
-      private final NestedSetBuilder<LibraryToLinkWrapper> libraries = NestedSetBuilder.linkOrder();
+      private final NestedSetBuilder<LibraryToLink> libraries = NestedSetBuilder.linkOrder();
       private final NestedSetBuilder<LinkOptions> userLinkFlags = NestedSetBuilder.linkOrder();
       private final NestedSetBuilder<Linkstamp> linkstamps = NestedSetBuilder.compileOrder();
       private final NestedSetBuilder<Artifact> nonCodeInputs = NestedSetBuilder.linkOrder();
       private ExtraLinkTimeLibraries extraLinkTimeLibraries = null;
 
-      public Builder addLibraries(NestedSet<LibraryToLinkWrapper> libraries) {
+      public Builder addLibraries(NestedSet<LibraryToLink> libraries) {
         this.libraries.addTransitive(libraries);
         return this;
       }
@@ -467,10 +463,10 @@
     }
   }
 
-  private LibraryToLink picStaticLibraryToLink;
-  private LibraryToLink staticLibraryToLink;
-  private LibraryToLink dynamicLibraryToLink;
-  private LibraryToLink interfaceLibraryToLink;
+  private LinkerInputs.LibraryToLink picStaticLibraryToLink;
+  private LinkerInputs.LibraryToLink staticLibraryToLink;
+  private LinkerInputs.LibraryToLink dynamicLibraryToLink;
+  private LinkerInputs.LibraryToLink interfaceLibraryToLink;
 
   public abstract String getLibraryIdentifier();
 
@@ -524,17 +520,15 @@
   abstract boolean getMustKeepDebug();
 
   public static Builder builder() {
-    return new AutoValue_LibraryToLinkWrapper.Builder()
-        .setMustKeepDebug(false)
-        .setAlwayslink(false);
+    return new AutoValue_LibraryToLink.Builder().setMustKeepDebug(false).setAlwayslink(false);
   }
 
   @Nullable
   @SuppressWarnings("ReferenceEquality")
   static String setDynamicArtifactsAndReturnIdentifier(
-      LibraryToLinkWrapper.Builder libraryToLinkWrapperBuilder,
-      LibraryToLink dynamicModeParamsForExecutableEntry,
-      LibraryToLink dynamicModeParamsForDynamicLibraryEntry,
+      LibraryToLink.Builder libraryToLinkBuilder,
+      LinkerInputs.LibraryToLink dynamicModeParamsForExecutableEntry,
+      LinkerInputs.LibraryToLink dynamicModeParamsForDynamicLibraryEntry,
       ListIterator<Artifact> runtimeLibraryIterator) {
     Preconditions.checkNotNull(runtimeLibraryIterator);
     Artifact artifact = dynamicModeParamsForExecutableEntry.getArtifact();
@@ -579,29 +573,29 @@
         if (ArtifactCategory.INTERFACE_LIBRARY
             .getAllowedExtensions()
             .contains("." + artifact.getExtension())) {
-          libraryToLinkWrapperBuilder.setInterfaceLibrary(artifact);
-          libraryToLinkWrapperBuilder.setResolvedSymlinkInterfaceLibrary(
+          libraryToLinkBuilder.setInterfaceLibrary(artifact);
+          libraryToLinkBuilder.setResolvedSymlinkInterfaceLibrary(
               dynamicModeParamsForExecutableEntry.getOriginalLibraryArtifact());
           if (runtimeArtifact != null) {
-            libraryToLinkWrapperBuilder.setDynamicLibrary(runtimeArtifact);
+            libraryToLinkBuilder.setDynamicLibrary(runtimeArtifact);
           }
         } else {
           Preconditions.checkState(runtimeArtifact == null || artifact == runtimeArtifact);
-          libraryToLinkWrapperBuilder.setDynamicLibrary(artifact);
-          libraryToLinkWrapperBuilder.setResolvedSymlinkDynamicLibrary(
+          libraryToLinkBuilder.setDynamicLibrary(artifact);
+          libraryToLinkBuilder.setResolvedSymlinkDynamicLibrary(
               dynamicModeParamsForExecutableEntry.getOriginalLibraryArtifact());
         }
       } else {
-        libraryToLinkWrapperBuilder.setDynamicLibrary(artifact);
+        libraryToLinkBuilder.setDynamicLibrary(artifact);
         Preconditions.checkState(runtimeArtifact == null || artifact == runtimeArtifact);
       }
     } else if (dynamicModeParamsForExecutableEntry.getArtifactCategory()
         == ArtifactCategory.INTERFACE_LIBRARY) {
       Preconditions.checkState(
           !(dynamicModeParamsForExecutableEntry instanceof SolibLibraryToLink));
-      libraryToLinkWrapperBuilder.setInterfaceLibrary(artifact);
+      libraryToLinkBuilder.setInterfaceLibrary(artifact);
       if (runtimeArtifact != null) {
-        libraryToLinkWrapperBuilder.setDynamicLibrary(runtimeArtifact);
+        libraryToLinkBuilder.setDynamicLibrary(runtimeArtifact);
       }
     }
     return libraryIdentifier;
@@ -623,7 +617,7 @@
     return currentWithoutExtension;
   }
 
-  LibraryToLink getStaticLibraryToLink() {
+  LinkerInputs.LibraryToLink getStaticLibraryToLink() {
     Preconditions.checkNotNull(getStaticLibrary(), this);
     if (staticLibraryToLink != null) {
       return staticLibraryToLink;
@@ -642,7 +636,7 @@
     return staticLibraryToLink;
   }
 
-  LibraryToLink getPicStaticLibraryToLink() {
+  LinkerInputs.LibraryToLink getPicStaticLibraryToLink() {
     Preconditions.checkNotNull(getPicStaticLibrary(), this);
     if (picStaticLibraryToLink != null) {
       return picStaticLibraryToLink;
@@ -661,7 +655,7 @@
     return picStaticLibraryToLink;
   }
 
-  LibraryToLink getDynamicLibraryToLink() {
+  LinkerInputs.LibraryToLink getDynamicLibraryToLink() {
     Preconditions.checkNotNull(getDynamicLibrary(), this);
     if (dynamicLibraryToLink != null) {
       return dynamicLibraryToLink;
@@ -684,7 +678,7 @@
     return dynamicLibraryToLink;
   }
 
-  LibraryToLink getInterfaceLibraryToLink() {
+  LinkerInputs.LibraryToLink getInterfaceLibraryToLink() {
     Preconditions.checkNotNull(getInterfaceLibrary());
     if (interfaceLibraryToLink != null) {
       return interfaceLibraryToLink;
@@ -708,10 +702,10 @@
   }
 
   public static List<Artifact> getDynamicLibrariesForRuntime(
-      boolean linkingStatically, Iterable<LibraryToLinkWrapper> libraries) {
+      boolean linkingStatically, Iterable<LibraryToLink> libraries) {
     ImmutableList.Builder<Artifact> dynamicLibrariesForRuntimeBuilder = ImmutableList.builder();
-    for (LibraryToLinkWrapper libraryToLinkWrapper : libraries) {
-      Artifact artifact = libraryToLinkWrapper.getDynamicLibraryForRuntimeOrNull(linkingStatically);
+    for (LibraryToLink libraryToLink : libraries) {
+      Artifact artifact = libraryToLink.getDynamicLibraryForRuntimeOrNull(linkingStatically);
       if (artifact != null) {
         dynamicLibrariesForRuntimeBuilder.add(artifact);
       }
@@ -719,20 +713,19 @@
     return dynamicLibrariesForRuntimeBuilder.build();
   }
 
-  public static List<Artifact> getDynamicLibrariesForLinking(
-      Iterable<LibraryToLinkWrapper> libraries) {
+  public static List<Artifact> getDynamicLibrariesForLinking(Iterable<LibraryToLink> libraries) {
     ImmutableList.Builder<Artifact> dynamicLibrariesForLinkingBuilder = ImmutableList.builder();
-    for (LibraryToLinkWrapper libraryToLinkWrapper : libraries) {
-      if (libraryToLinkWrapper.getInterfaceLibrary() != null) {
-        dynamicLibrariesForLinkingBuilder.add(libraryToLinkWrapper.getInterfaceLibrary());
-      } else if (libraryToLinkWrapper.getDynamicLibrary() != null) {
-        dynamicLibrariesForLinkingBuilder.add(libraryToLinkWrapper.getDynamicLibrary());
+    for (LibraryToLink libraryToLink : libraries) {
+      if (libraryToLink.getInterfaceLibrary() != null) {
+        dynamicLibrariesForLinkingBuilder.add(libraryToLink.getInterfaceLibrary());
+      } else if (libraryToLink.getDynamicLibrary() != null) {
+        dynamicLibrariesForLinkingBuilder.add(libraryToLink.getDynamicLibrary());
       }
     }
     return dynamicLibrariesForLinkingBuilder.build();
   }
 
-  /** Builder for LibraryToLinkWrapper. */
+  /** Builder for LibraryToLink. */
   @AutoValue.Builder
   public abstract static class Builder {
 
@@ -769,7 +762,7 @@
     public abstract Builder setMustKeepDebug(boolean mustKeepDebug);
 
     // Methods just for validation, not to be called externally.
-    abstract LibraryToLinkWrapper autoBuild();
+    abstract LibraryToLink autoBuild();
 
     abstract String getLibraryIdentifier();
 
@@ -797,7 +790,7 @@
 
     abstract Artifact getResolvedSymlinkInterfaceLibrary();
 
-    public LibraryToLinkWrapper build() {
+    public LibraryToLink build() {
       Preconditions.checkNotNull(getLibraryIdentifier());
       Preconditions.checkState(
           (getObjectFiles() == null
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoAspect.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoAspect.java
index 4c6845c..ba9510b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoAspect.java
@@ -57,8 +57,8 @@
 import com.google.devtools.build.lib.rules.cpp.CppHelper;
 import com.google.devtools.build.lib.rules.cpp.CppRuleClasses;
 import com.google.devtools.build.lib.rules.cpp.CppSemantics;
-import com.google.devtools.build.lib.rules.cpp.LibraryToLinkWrapper;
-import com.google.devtools.build.lib.rules.cpp.LibraryToLinkWrapper.CcLinkingContext;
+import com.google.devtools.build.lib.rules.cpp.LibraryToLink;
+import com.google.devtools.build.lib.rules.cpp.LibraryToLink.CcLinkingContext;
 import com.google.devtools.build.lib.rules.proto.ProtoCommon;
 import com.google.devtools.build.lib.rules.proto.ProtoCompileActionBuilder;
 import com.google.devtools.build.lib.rules.proto.ProtoCompileActionBuilder.Exports;
@@ -212,18 +212,18 @@
         ccLinkingHelper.emitInterfaceSharedLibraries(true);
       }
 
-      ImmutableList<LibraryToLinkWrapper> libraryToLinkWrapper = ImmutableList.of();
+      ImmutableList<LibraryToLink> libraryToLink = ImmutableList.of();
       if (!ccCompilationOutputs.isEmpty()) {
         CcLinkingOutputs ccLinkingOutputs = ccLinkingHelper.link(ccCompilationOutputs);
         if (!ccLinkingOutputs.isEmpty()) {
-          libraryToLinkWrapper = ImmutableList.of(ccLinkingOutputs.getLibraryToLink());
+          libraryToLink = ImmutableList.of(ccLinkingOutputs.getLibraryToLink());
         }
       }
       CcNativeLibraryProvider ccNativeLibraryProvider =
-          CppHelper.collectNativeCcLibraries(deps, libraryToLinkWrapper);
+          CppHelper.collectNativeCcLibraries(deps, libraryToLink);
       CcLinkingContext ccLinkingContext =
-          ccLinkingHelper.buildCcLinkingContextFromLibraryToLinkWrappers(
-              libraryToLinkWrapper, compilationInfo.getCcCompilationContext());
+          ccLinkingHelper.buildCcLinkingContextFromLibrariesToLink(
+              libraryToLink, compilationInfo.getCcCompilationContext());
 
       CppDebugFileProvider cppDebugFileProvider =
           CcCompilationHelper.buildCppDebugFileProvider(
@@ -243,8 +243,8 @@
               CcCompilationHelper.buildOutputGroups(compilationInfo.getCcCompilationOutputs()));
       // On Windows, dynamic library is not built by default, so don't add them to filesToBuild.
 
-      if (!libraryToLinkWrapper.isEmpty()) {
-        LibraryToLinkWrapper artifactsToBuild = libraryToLinkWrapper.get(0);
+      if (!libraryToLink.isEmpty()) {
+        LibraryToLink artifactsToBuild = libraryToLink.get(0);
         if (artifactsToBuild.getStaticLibrary() != null) {
           filesBuilder.add(artifactsToBuild.getStaticLibrary());
         }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java
index 988be2b..e94868d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java
@@ -48,7 +48,7 @@
 import com.google.devtools.build.lib.rules.cpp.CcToolchainProvider;
 import com.google.devtools.build.lib.rules.cpp.CppConfiguration;
 import com.google.devtools.build.lib.rules.cpp.CppHelper;
-import com.google.devtools.build.lib.rules.cpp.LibraryToLinkWrapper;
+import com.google.devtools.build.lib.rules.cpp.LibraryToLink;
 import com.google.devtools.build.lib.rules.java.JavaCompilationArgsProvider.ClasspathType;
 import com.google.devtools.build.lib.rules.java.JavaConfiguration.OneVersionEnforcementLevel;
 import com.google.devtools.build.lib.rules.java.ProguardHelper.ProguardOutput;
@@ -650,9 +650,9 @@
    */
   public static Collection<Artifact> collectNativeLibraries(
       Iterable<? extends TransitiveInfoCollection> deps) {
-    NestedSet<LibraryToLinkWrapper> linkerInputs =
+    NestedSet<LibraryToLink> linkerInputs =
         new NativeLibraryNestedSetBuilder().addJavaTargets(deps).build();
-    return LibraryToLinkWrapper.getDynamicLibrariesForLinking(linkerInputs);
+    return LibraryToLink.getDynamicLibrariesForLinking(linkerInputs);
   }
 
   /**
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java
index db00038..d47425a 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java
@@ -45,7 +45,7 @@
 import com.google.devtools.build.lib.packages.BuildType;
 import com.google.devtools.build.lib.packages.Target;
 import com.google.devtools.build.lib.packages.TargetUtils;
-import com.google.devtools.build.lib.rules.cpp.LibraryToLinkWrapper;
+import com.google.devtools.build.lib.rules.cpp.LibraryToLink;
 import com.google.devtools.build.lib.rules.java.JavaCompilationArgsProvider.ClasspathType;
 import com.google.devtools.build.lib.rules.java.JavaPluginInfoProvider.JavaPluginInfo;
 import com.google.devtools.build.lib.syntax.Type;
@@ -358,7 +358,7 @@
    *
    * @see JavaNativeLibraryProvider
    */
-  protected NestedSet<LibraryToLinkWrapper> collectTransitiveJavaNativeLibraries() {
+  protected NestedSet<LibraryToLink> collectTransitiveJavaNativeLibraries() {
     NativeLibraryNestedSetBuilder builder = new NativeLibraryNestedSetBuilder();
     builder.addJavaTargets(targetsTreatedAsDeps(ClasspathType.BOTH));
 
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java
index 7e56364..d0322f8 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java
@@ -31,7 +31,7 @@
 import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget.Mode;
 import com.google.devtools.build.lib.collect.nestedset.NestedSet;
 import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
-import com.google.devtools.build.lib.rules.cpp.LibraryToLinkWrapper;
+import com.google.devtools.build.lib.rules.cpp.LibraryToLink;
 import java.util.LinkedHashSet;
 import java.util.Set;
 
@@ -78,7 +78,7 @@
     JavaCompilationArtifacts javaArtifacts = collectJavaArtifacts(jars, interfaceJars);
     common.setJavaCompilationArtifacts(javaArtifacts);
 
-    NestedSet<LibraryToLinkWrapper> transitiveJavaNativeLibraries =
+    NestedSet<LibraryToLink> transitiveJavaNativeLibraries =
         common.collectTransitiveJavaNativeLibraries();
     boolean neverLink = JavaCommon.isNeverLink(ruleContext);
     JavaCompilationArgsProvider javaCompilationArgs =
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java
index 7216dc9..5464f3d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java
@@ -24,7 +24,7 @@
 import com.google.devtools.build.lib.analysis.RunfilesProvider;
 import com.google.devtools.build.lib.collect.nestedset.NestedSet;
 import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
-import com.google.devtools.build.lib.rules.cpp.LibraryToLinkWrapper;
+import com.google.devtools.build.lib.rules.cpp.LibraryToLink;
 import com.google.devtools.build.lib.rules.java.JavaCompilationArgsProvider.ClasspathType;
 import com.google.devtools.build.lib.rules.java.proto.GeneratedExtensionRegistryProvider;
 
@@ -165,7 +165,7 @@
         new JavaStrictCompilationArgsProvider(
             common.collectJavaCompilationArgs(
                 neverLink, /* srcLessDepsExport= */ false, /* javaProtoLibraryStrictDeps= */ true));
-    NestedSet<LibraryToLinkWrapper> transitiveJavaNativeLibraries =
+    NestedSet<LibraryToLink> transitiveJavaNativeLibraries =
         common.collectTransitiveJavaNativeLibraries();
 
     RuleConfiguredTargetBuilder builder = new RuleConfiguredTargetBuilder(ruleContext);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaNativeLibraryProvider.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaNativeLibraryProvider.java
index e9cf460..c22b68e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaNativeLibraryProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaNativeLibraryProvider.java
@@ -18,7 +18,7 @@
 import com.google.devtools.build.lib.collect.nestedset.NestedSet;
 import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.rules.cpp.LibraryToLinkWrapper;
+import com.google.devtools.build.lib.rules.cpp.LibraryToLink;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 
 /**
@@ -29,9 +29,9 @@
 @AutoCodec
 public final class JavaNativeLibraryProvider implements TransitiveInfoProvider {
 
-  private final NestedSet<LibraryToLinkWrapper> transitiveJavaNativeLibraries;
+  private final NestedSet<LibraryToLink> transitiveJavaNativeLibraries;
 
-  public JavaNativeLibraryProvider(NestedSet<LibraryToLinkWrapper> transitiveJavaNativeLibraries) {
+  public JavaNativeLibraryProvider(NestedSet<LibraryToLink> transitiveJavaNativeLibraries) {
     this.transitiveJavaNativeLibraries = transitiveJavaNativeLibraries;
   }
 
@@ -39,12 +39,12 @@
    * Collects native libraries in the transitive closure of its deps that are needed for executing
    * Java code.
    */
-  public NestedSet<LibraryToLinkWrapper> getTransitiveJavaNativeLibraries() {
+  public NestedSet<LibraryToLink> getTransitiveJavaNativeLibraries() {
     return transitiveJavaNativeLibraries;
   }
 
   public static JavaNativeLibraryProvider merge(Iterable<JavaNativeLibraryProvider> deps) {
-    NestedSetBuilder<LibraryToLinkWrapper> transitiveSourceJars = NestedSetBuilder.stableOrder();
+    NestedSetBuilder<LibraryToLink> transitiveSourceJars = NestedSetBuilder.stableOrder();
 
     for (JavaNativeLibraryProvider wrapper : deps) {
       transitiveSourceJars.addTransitive(wrapper.getTransitiveJavaNativeLibraries());
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/NativeLibraryNestedSetBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/java/NativeLibraryNestedSetBuilder.java
index 6648387..8598750 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/NativeLibraryNestedSetBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/NativeLibraryNestedSetBuilder.java
@@ -22,21 +22,21 @@
 import com.google.devtools.build.lib.rules.cpp.CcLinkingOutputs;
 import com.google.devtools.build.lib.rules.cpp.CcNativeLibraryProvider;
 import com.google.devtools.build.lib.rules.cpp.CppFileTypes;
-import com.google.devtools.build.lib.rules.cpp.LibraryToLinkWrapper;
+import com.google.devtools.build.lib.rules.cpp.LibraryToLink;
 import com.google.devtools.build.lib.util.FileType;
 
 /** A builder that helps construct nested sets of native libraries. */
 public final class NativeLibraryNestedSetBuilder {
 
-  private final NestedSetBuilder<LibraryToLinkWrapper> builder = NestedSetBuilder.linkOrder();
+  private final NestedSetBuilder<LibraryToLink> builder = NestedSetBuilder.linkOrder();
 
   /** Build a nested set of native libraries. */
-  public NestedSet<LibraryToLinkWrapper> build() {
+  public NestedSet<LibraryToLink> build() {
     return builder.build();
   }
 
   /** Include specified artifacts as native libraries in the nested set. */
-  public NativeLibraryNestedSetBuilder addAll(Iterable<LibraryToLinkWrapper> deps) {
+  public NativeLibraryNestedSetBuilder addAll(Iterable<LibraryToLink> deps) {
     builder.addAll(deps);
     return this;
   }
@@ -94,7 +94,7 @@
         FileType.filterList(
             dep.getProvider(FileProvider.class).getFilesToBuild(), CppFileTypes.SHARED_LIBRARY)) {
       builder.add(
-          LibraryToLinkWrapper.builder()
+          LibraryToLink.builder()
               .setLibraryIdentifier(CcLinkingOutputs.libraryIdentifierOf(artifact))
               .setDynamicLibrary(artifact)
               .build());
diff --git a/src/main/java/com/google/devtools/build/lib/rules/nativedeps/NativeDepsHelper.java b/src/main/java/com/google/devtools/build/lib/rules/nativedeps/NativeDepsHelper.java
index 56cff9b..ce5d87d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/nativedeps/NativeDepsHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/nativedeps/NativeDepsHelper.java
@@ -43,9 +43,9 @@
 import com.google.devtools.build.lib.rules.cpp.CppRuleClasses;
 import com.google.devtools.build.lib.rules.cpp.CppSemantics;
 import com.google.devtools.build.lib.rules.cpp.FdoContext;
-import com.google.devtools.build.lib.rules.cpp.LibraryToLinkWrapper;
-import com.google.devtools.build.lib.rules.cpp.LibraryToLinkWrapper.CcLinkingContext;
-import com.google.devtools.build.lib.rules.cpp.LibraryToLinkWrapper.CcLinkingContext.Linkstamp;
+import com.google.devtools.build.lib.rules.cpp.LibraryToLink;
+import com.google.devtools.build.lib.rules.cpp.LibraryToLink.CcLinkingContext;
+import com.google.devtools.build.lib.rules.cpp.LibraryToLink.CcLinkingContext.Linkstamp;
 import com.google.devtools.build.lib.rules.cpp.Link;
 import com.google.devtools.build.lib.rules.cpp.Link.LinkTargetType;
 import com.google.devtools.build.lib.rules.cpp.Link.LinkingMode;
@@ -148,8 +148,8 @@
   }
 
   /** Determines if there is any code to be linked in the input iterable. */
-  private static boolean containsCodeToLink(Iterable<LibraryToLinkWrapper> libraries) {
-    for (LibraryToLinkWrapper library : libraries) {
+  private static boolean containsCodeToLink(Iterable<LibraryToLink> libraries) {
+    for (LibraryToLink library : libraries) {
       if (containsCodeToLink(library)) {
         return true;
       }
@@ -158,7 +158,7 @@
   }
 
   /** Determines if the input library is or contains an archive which must be linked. */
-  private static boolean containsCodeToLink(LibraryToLinkWrapper library) {
+  private static boolean containsCodeToLink(LibraryToLink library) {
     if (library.getStaticLibrary() == null && library.getPicStaticLibrary() == null) {
       // this is a shared library so we're going to have to copy it
       return false;
@@ -210,7 +210,7 @@
             ruleContext, CppBuildInfo.KEY, configuration);
 
     boolean shareNativeDeps = configuration.getFragment(CppConfiguration.class).shareNativeDeps();
-    NestedSet<LibraryToLinkWrapper> linkerInputs = ccLinkingContext.getLibraries();
+    NestedSet<LibraryToLink> linkerInputs = ccLinkingContext.getLibraries();
     Artifact sharedLibrary;
     if (shareNativeDeps) {
       PathFragment sharedPath =
@@ -262,7 +262,7 @@
           toolchain.getStaticRuntimeLinkInputs(ruleContext, featureConfiguration));
     }
     LtoCompilationContext.Builder ltoCompilationContext = new LtoCompilationContext.Builder();
-    for (LibraryToLinkWrapper lib : linkerInputs) {
+    for (LibraryToLink lib : linkerInputs) {
       if (lib.getPicLtoCompilationContext() != null
           && !lib.getPicLtoCompilationContext().isEmpty()) {
         ltoCompilationContext.addAll(lib.getPicLtoCompilationContext());
@@ -280,7 +280,7 @@
     builder
         .setLinkArtifactFactory(SHAREABLE_LINK_ARTIFACT_FACTORY)
         .setLinkerFiles(toolchain.getLinkerFiles())
-        .addLibraryToLinkWrappers(linkerInputs)
+        .addLibrariesToLink(linkerInputs)
         .setLinkType(LinkTargetType.DYNAMIC_LIBRARY)
         .setLinkingMode(LinkingMode.STATIC)
         .setLibraryIdentifier(libraryIdentifier)
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java
index 095eb60..f6df9f6e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java
@@ -70,8 +70,8 @@
 import com.google.devtools.build.lib.rules.cpp.CcInfo;
 import com.google.devtools.build.lib.rules.cpp.CppFileTypes;
 import com.google.devtools.build.lib.rules.cpp.CppModuleMap;
-import com.google.devtools.build.lib.rules.cpp.LibraryToLinkWrapper;
-import com.google.devtools.build.lib.rules.cpp.LibraryToLinkWrapper.CcLinkingContext;
+import com.google.devtools.build.lib.rules.cpp.LibraryToLink;
+import com.google.devtools.build.lib.rules.cpp.LibraryToLink.CcLinkingContext;
 import com.google.devtools.build.lib.skyframe.ConfiguredTargetAndData;
 import com.google.devtools.build.lib.syntax.SkylarkSemantics;
 import com.google.devtools.build.lib.util.FileType;
@@ -455,7 +455,7 @@
             .addAll(LINKOPT, nonFrameworkLinkOpts.build())
             .addTransitiveAndPropagate(
                 CC_LIBRARY,
-                NestedSetBuilder.<LibraryToLinkWrapper>linkOrder()
+                NestedSetBuilder.<LibraryToLink>linkOrder()
                     .addTransitive(linkProvider.getLibraries())
                     .build());
       }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java
index 6f97111..7a52350 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java
@@ -27,9 +27,9 @@
 import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
 import com.google.devtools.build.lib.rules.cpp.CcCompilationContext;
 import com.google.devtools.build.lib.rules.cpp.CcInfo;
-import com.google.devtools.build.lib.rules.cpp.LibraryToLinkWrapper;
-import com.google.devtools.build.lib.rules.cpp.LibraryToLinkWrapper.CcLinkingContext;
-import com.google.devtools.build.lib.rules.cpp.LibraryToLinkWrapper.CcLinkingContext.LinkOptions;
+import com.google.devtools.build.lib.rules.cpp.LibraryToLink;
+import com.google.devtools.build.lib.rules.cpp.LibraryToLink.CcLinkingContext;
+import com.google.devtools.build.lib.rules.cpp.LibraryToLink.CcLinkingContext.LinkOptions;
 import com.google.devtools.build.lib.rules.objc.ObjcCommon.ResourceAttributes;
 import com.google.devtools.build.lib.syntax.Type;
 import com.google.devtools.build.lib.vfs.FileSystemUtils;
@@ -126,11 +126,11 @@
 
   private CcLinkingContext buildCcLinkingContext(
       ObjcCommon common, SymbolGenerator<?> symbolGenerator) {
-    ImmutableSet.Builder<LibraryToLinkWrapper> libraries = new ImmutableSet.Builder<>();
+    ImmutableSet.Builder<LibraryToLink> libraries = new ImmutableSet.Builder<>();
     ObjcProvider objcProvider = common.getObjcProvider();
     for (Artifact library : objcProvider.get(ObjcProvider.LIBRARY)) {
       libraries.add(
-          LibraryToLinkWrapper.builder()
+          LibraryToLink.builder()
               .setStaticLibrary(library)
               .setLibraryIdentifier(
                   FileSystemUtils.removeExtension(library.getRootRelativePathString()))
@@ -141,9 +141,7 @@
     CcLinkingContext.Builder ccLinkingContext =
         CcLinkingContext.builder()
             .addLibraries(
-                NestedSetBuilder.<LibraryToLinkWrapper>linkOrder()
-                    .addAll(libraries.build())
-                    .build());
+                NestedSetBuilder.<LibraryToLink>linkOrder().addAll(libraries.build()).build());
 
     NestedSetBuilder<LinkOptions> userLinkFlags = NestedSetBuilder.linkOrder();
     for (SdkFramework sdkFramework : objcProvider.get(ObjcProvider.SDK_FRAMEWORK)) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java
index f9ab015..0e532ed 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java
@@ -35,9 +35,8 @@
 import com.google.devtools.build.lib.packages.Info;
 import com.google.devtools.build.lib.packages.NativeProvider.WithLegacySkylarkName;
 import com.google.devtools.build.lib.rules.cpp.CppModuleMap;
-import com.google.devtools.build.lib.rules.cpp.LibraryToLinkWrapper;
-import com.google.devtools.build.lib.rules.cpp.LibraryToLinkWrapper.CcLinkingContext;
-import com.google.devtools.build.lib.rules.cpp.LinkerInputs.LibraryToLink;
+import com.google.devtools.build.lib.rules.cpp.LibraryToLink;
+import com.google.devtools.build.lib.rules.cpp.LibraryToLink.CcLinkingContext;
 import com.google.devtools.build.lib.skylarkbuildapi.apple.ObjcProviderApi;
 import com.google.devtools.build.lib.syntax.EvalUtils;
 import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
@@ -293,8 +292,8 @@
   public static final Key<Artifact> STRINGS = new Key<>(STABLE_ORDER, "strings", Artifact.class);
 
   /** Linking information from cc dependencies. */
-  public static final Key<LibraryToLinkWrapper> CC_LIBRARY =
-      new Key<>(LINK_ORDER, "cc_library", LibraryToLinkWrapper.class);
+  public static final Key<LibraryToLink> CC_LIBRARY =
+      new Key<>(LINK_ORDER, "cc_library", LibraryToLink.class);
 
   /**
    * Linking options from dependencies.
@@ -749,9 +748,9 @@
 
   /** Returns the list of .a files required for linking that arise from cc libraries. */
   List<Artifact> getCcLibraries() {
-    NestedSetBuilder<LibraryToLinkWrapper> libraryToLinkListBuilder = NestedSetBuilder.linkOrder();
-    for (LibraryToLinkWrapper libraryToLinkWrapper : get(CC_LIBRARY)) {
-      libraryToLinkListBuilder.add(libraryToLinkWrapper);
+    NestedSetBuilder<LibraryToLink> libraryToLinkListBuilder = NestedSetBuilder.linkOrder();
+    for (LibraryToLink libraryToLink : get(CC_LIBRARY)) {
+      libraryToLinkListBuilder.add(libraryToLink);
     }
     CcLinkingContext ccLinkingContext =
         CcLinkingContext.builder().addLibraries(libraryToLinkListBuilder.build()).build();
@@ -782,12 +781,13 @@
     // TODO(cpeyser): Clean up objc-cc interop.
     HashSet<PathFragment> avoidLibrariesSet = new HashSet<>();
     for (CcLinkingContext ccLinkingContext : avoidCcProviders) {
-      List<LibraryToLink> librariesToLink =
-          LibraryToLinkWrapper.convertLibraryToLinkWrapperListToLibraryToLinkList(
+      List<com.google.devtools.build.lib.rules.cpp.LinkerInputs.LibraryToLink> librariesToLink =
+          LibraryToLink.convertLibraryToLinkListToLibraryToLinkList(
               ccLinkingContext.getLibraries(),
               /* staticMode= */ true,
               /* forDynamicLibrary= */ false);
-      for (LibraryToLink libraryToLink : librariesToLink) {
+      for (com.google.devtools.build.lib.rules.cpp.LinkerInputs.LibraryToLink libraryToLink :
+          librariesToLink) {
         avoidLibrariesSet.add(libraryToLink.getArtifact().getRunfilesPath());
       }
     }
@@ -831,39 +831,38 @@
   }
 
   /**
-   * Returns a predicate which returns true for a given {@link LibraryToLinkWrapper} if the
-   * library's runfiles path is not contained in the given set.
+   * Returns a predicate which returns true for a given {@link LibraryToLink} if the library's
+   * runfiles path is not contained in the given set.
    *
    * @param runfilesPaths if a given library has runfiles path present in this set, the predicate
    *     will return false
    */
-  private static Predicate<LibraryToLinkWrapper> ccLibraryNotYetLinked(
+  private static Predicate<LibraryToLink> ccLibraryNotYetLinked(
       final HashSet<PathFragment> runfilesPaths) {
     return libraryToLink -> !checkIfLibraryIsInPaths(libraryToLink, runfilesPaths);
   }
 
   private static boolean checkIfLibraryIsInPaths(
-      LibraryToLinkWrapper libraryToLinkWrapper, HashSet<PathFragment> runfilesPaths) {
+      LibraryToLink libraryToLink, HashSet<PathFragment> runfilesPaths) {
     ImmutableList.Builder<PathFragment> libraryRunfilesPaths = ImmutableList.builder();
-    if (libraryToLinkWrapper.getStaticLibrary() != null) {
-      libraryRunfilesPaths.add(libraryToLinkWrapper.getStaticLibrary().getRunfilesPath());
+    if (libraryToLink.getStaticLibrary() != null) {
+      libraryRunfilesPaths.add(libraryToLink.getStaticLibrary().getRunfilesPath());
     }
-    if (libraryToLinkWrapper.getPicStaticLibrary() != null) {
-      libraryRunfilesPaths.add(libraryToLinkWrapper.getPicStaticLibrary().getRunfilesPath());
+    if (libraryToLink.getPicStaticLibrary() != null) {
+      libraryRunfilesPaths.add(libraryToLink.getPicStaticLibrary().getRunfilesPath());
     }
-    if (libraryToLinkWrapper.getDynamicLibrary() != null) {
-      libraryRunfilesPaths.add(libraryToLinkWrapper.getDynamicLibrary().getRunfilesPath());
+    if (libraryToLink.getDynamicLibrary() != null) {
+      libraryRunfilesPaths.add(libraryToLink.getDynamicLibrary().getRunfilesPath());
     }
-    if (libraryToLinkWrapper.getResolvedSymlinkDynamicLibrary() != null) {
+    if (libraryToLink.getResolvedSymlinkDynamicLibrary() != null) {
+      libraryRunfilesPaths.add(libraryToLink.getResolvedSymlinkDynamicLibrary().getRunfilesPath());
+    }
+    if (libraryToLink.getInterfaceLibrary() != null) {
+      libraryRunfilesPaths.add(libraryToLink.getInterfaceLibrary().getRunfilesPath());
+    }
+    if (libraryToLink.getResolvedSymlinkInterfaceLibrary() != null) {
       libraryRunfilesPaths.add(
-          libraryToLinkWrapper.getResolvedSymlinkDynamicLibrary().getRunfilesPath());
-    }
-    if (libraryToLinkWrapper.getInterfaceLibrary() != null) {
-      libraryRunfilesPaths.add(libraryToLinkWrapper.getInterfaceLibrary().getRunfilesPath());
-    }
-    if (libraryToLinkWrapper.getResolvedSymlinkInterfaceLibrary() != null) {
-      libraryRunfilesPaths.add(
-          libraryToLinkWrapper.getResolvedSymlinkInterfaceLibrary().getRunfilesPath());
+          libraryToLink.getResolvedSymlinkInterfaceLibrary().getRunfilesPath());
     }
 
     return !Collections.disjoint(libraryRunfilesPaths.build(), runfilesPaths);
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/BazelCcModuleApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/BazelCcModuleApi.java
index a97b3de..3e454c6 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/BazelCcModuleApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/BazelCcModuleApi.java
@@ -41,7 +41,7 @@
         CcCompilationOutputsT extends CcCompilationOutputsApi,
         LinkingInfoT extends LinkingInfoApi,
         LinkingContextT extends CcLinkingContextApi,
-        LibraryToLinkWrapperT extends LibraryToLinkWrapperApi,
+        LibraryToLinkT extends LibraryToLinkApi,
         CcToolchainVariablesT extends CcToolchainVariablesApi,
         CcToolchainConfigInfoT extends CcToolchainConfigInfoApi>
     extends CcModuleApi<
@@ -49,7 +49,7 @@
         FeatureConfigurationT,
         CcCompilationContextT,
         LinkingContextT,
-        LibraryToLinkWrapperT,
+        LibraryToLinkT,
         CcToolchainVariablesT,
         SkylarkRuleContextT,
         CcToolchainConfigInfoT> {
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcBootstrap.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcBootstrap.java
index ecf3d3d..a06572d 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcBootstrap.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcBootstrap.java
@@ -34,7 +34,7 @@
           ? extends CcCompilationOutputsApi,
           ? extends LinkingInfoApi,
           ? extends CcLinkingContextApi,
-          ? extends LibraryToLinkWrapperApi,
+          ? extends LibraryToLinkApi,
           ? extends CcToolchainVariablesApi,
           ? extends CcToolchainConfigInfoApi>
       ccModule;
@@ -50,7 +50,7 @@
               ? extends CcCompilationOutputsApi,
               ? extends LinkingInfoApi,
               ? extends CcLinkingContextApi,
-              ? extends LibraryToLinkWrapperApi,
+              ? extends LibraryToLinkApi,
               ? extends CcToolchainVariablesApi,
               ? extends CcToolchainConfigInfoApi>
           ccModule) {
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcLinkingContextApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcLinkingContextApi.java
index 3d70d84..6acdc7f 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcLinkingContextApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcLinkingContextApi.java
@@ -37,5 +37,5 @@
       name = "libraries_to_link",
       doc = "Returns the list of <code>LibraryToLink</code>.",
       structField = true)
-  SkylarkList<LibraryToLinkWrapperApi> getSkylarkLibrariesToLink();
+  SkylarkList<LibraryToLinkApi> getSkylarkLibrariesToLink();
 }
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcLinkingOutputsApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcLinkingOutputsApi.java
index 0d26caa..d0c61dc 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcLinkingOutputsApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcLinkingOutputsApi.java
@@ -27,5 +27,5 @@
     doc = "Helper class containing CC compilation outputs.")
 public interface CcLinkingOutputsApi<FileT extends FileApi> {
   @SkylarkCallable(name = "library_to_link", structField = true, documented = false)
-  LibraryToLinkWrapperApi<FileT> getLibraryToLink();
+  LibraryToLinkApi<FileT> getLibraryToLink();
 }
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcModuleApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcModuleApi.java
index 30d3856..56ad1ec 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcModuleApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcModuleApi.java
@@ -40,7 +40,7 @@
     FeatureConfigurationT extends FeatureConfigurationApi,
     CompilationContextT extends CcCompilationContextApi,
     LinkingContextT extends CcLinkingContextApi,
-    LibraryToLinkWrapperT extends LibraryToLinkWrapperApi,
+    LibraryToLinkT extends LibraryToLinkApi,
     CcToolchainVariablesT extends CcToolchainVariablesApi,
     SkylarkRuleContextT extends SkylarkRuleContextApi,
     CcToolchainConfigInfoT extends CcToolchainConfigInfoApi> {
@@ -550,7 +550,7 @@
             named = true,
             defaultValue = "False"),
       })
-  LibraryToLinkWrapperT createLibraryLinkerInput(
+  LibraryToLinkT createLibraryLinkerInput(
       Object actions,
       Object featureConfiguration,
       Object ccToolchainProvider,
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/LibraryToLinkWrapperApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/LibraryToLinkApi.java
similarity index 97%
rename from src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/LibraryToLinkWrapperApi.java
rename to src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/LibraryToLinkApi.java
index 6da12af..9e365ef 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/LibraryToLinkWrapperApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/LibraryToLinkApi.java
@@ -27,7 +27,7 @@
     name = "LibraryToLink",
     category = SkylarkModuleCategory.BUILTIN,
     doc = "A library the user can link against.")
-public interface LibraryToLinkWrapperApi<FileT extends FileApi> {
+public interface LibraryToLinkApi<FileT extends FileApi> {
   @SkylarkCallable(
       name = "static_library",
       allowReturnNones = true,
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakeCcModule.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakeCcModule.java
index c170eec..ae7a17b 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakeCcModule.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakeCcModule.java
@@ -29,7 +29,7 @@
 import com.google.devtools.build.lib.skylarkbuildapi.cpp.CcToolchainVariablesApi;
 import com.google.devtools.build.lib.skylarkbuildapi.cpp.CompilationInfoApi;
 import com.google.devtools.build.lib.skylarkbuildapi.cpp.FeatureConfigurationApi;
-import com.google.devtools.build.lib.skylarkbuildapi.cpp.LibraryToLinkWrapperApi;
+import com.google.devtools.build.lib.skylarkbuildapi.cpp.LibraryToLinkApi;
 import com.google.devtools.build.lib.skylarkbuildapi.cpp.LinkingInfoApi;
 import com.google.devtools.build.lib.skylarkinterface.StarlarkContext;
 import com.google.devtools.build.lib.syntax.Environment;
@@ -50,7 +50,7 @@
         CcCompilationOutputsApi,
         LinkingInfoApi,
         CcLinkingContextApi,
-        LibraryToLinkWrapperApi,
+        LibraryToLinkApi,
         CcToolchainVariablesApi,
         CcToolchainConfigInfoApi> {
 
@@ -119,7 +119,7 @@
   }
 
   @Override
-  public LibraryToLinkWrapperApi createLibraryLinkerInput(
+  public LibraryToLinkApi createLibraryLinkerInput(
       Object actions,
       Object featureConfiguration,
       Object ccToolchainProvider,
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java
index 9f36e63..ebf1bf5 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java
@@ -207,7 +207,7 @@
     assertThat(getFilesToBuild(hello)).containsExactly(archive, implSharedObject,
         implInterfaceSharedObject);
     assertThat(
-            LibraryToLinkWrapper.getDynamicLibrariesForLinking(
+            LibraryToLink.getDynamicLibrariesForLinking(
                 hello.getProvider(CcNativeLibraryProvider.class).getTransitiveCcNativeLibraries()))
         .containsExactly(implInterfaceSharedObjectLink);
     assertThat(
@@ -273,7 +273,7 @@
         getSharedArtifact("_solib_" + cpu + "/libhello_Slibhello.so", hello);
     assertThat(getFilesToBuild(hello)).containsExactly(archive, sharedObject, implSharedObject);
     assertThat(
-            LibraryToLinkWrapper.getDynamicLibrariesForLinking(
+            LibraryToLink.getDynamicLibrariesForLinking(
                 hello.getProvider(CcNativeLibraryProvider.class).getTransitiveCcNativeLibraries()))
         .containsExactly(sharedObjectLink);
     assertThat(
@@ -1378,7 +1378,7 @@
     ConfiguredTarget target =
         scratchConfiguredTarget("a", "foo", "cc_library(name = 'foo', srcs = ['foo.cc'])");
 
-    LibraryToLinkWrapper library =
+    LibraryToLink library =
         Iterables.getOnlyElement(target.get(CcInfo.PROVIDER).getCcLinkingContext().getLibraries());
     Artifact libraryToUse = library.getPicStaticLibrary();
     if (libraryToUse == null) {
@@ -1395,7 +1395,7 @@
     ConfiguredTarget target =
         scratchConfiguredTarget("a", "foo", "cc_library(name = 'foo', srcs = ['libfoo.so'])");
 
-    LibraryToLinkWrapper library =
+    LibraryToLink library =
         Iterables.getOnlyElement(target.get(CcInfo.PROVIDER).getCcLinkingContext().getLibraries());
     assertThat(library.getStaticLibrary()).isNull();
     assertThat(artifactsToStrings(ImmutableList.of(library.getResolvedSymlinkDynamicLibrary())))
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/SkylarkCcCommonTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/SkylarkCcCommonTest.java
index b6c4fc3..e364bb6 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/SkylarkCcCommonTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/SkylarkCcCommonTest.java
@@ -1219,8 +1219,8 @@
     assertThat(userLinkFlags.getImmutableList())
         .containsExactly("-la", "-lc2", "-DEP2_LINKOPT", "-lc1", "-lc2", "-DEP1_LINKOPT");
     @SuppressWarnings("unchecked")
-    SkylarkList<LibraryToLinkWrapper> librariesToLink =
-        (SkylarkList<LibraryToLinkWrapper>) info.getValue("libraries_to_link", SkylarkList.class);
+    SkylarkList<LibraryToLink> librariesToLink =
+        (SkylarkList<LibraryToLink>) info.getValue("libraries_to_link", SkylarkList.class);
     assertThat(
             librariesToLink.stream()
                 .filter(x -> x.getStaticLibrary() != null)
@@ -1399,8 +1399,7 @@
     ConfiguredTarget target = getConfiguredTarget("//foo:skylark_lib");
     assertThat(target).isNotNull();
     @SuppressWarnings("unchecked")
-    SkylarkList<LibraryToLinkWrapper> libraries =
-        (SkylarkList<LibraryToLinkWrapper>) target.get("libraries");
+    SkylarkList<LibraryToLink> libraries = (SkylarkList<LibraryToLink>) target.get("libraries");
     assertThat(
             libraries.stream()
                 .map(x -> x.getResolvedSymlinkDynamicLibrary().getFilename())
@@ -1427,8 +1426,7 @@
     assertThat(getConfiguredTarget("//foo:skylark_lib")).isNotNull();
     ConfiguredTarget target = getConfiguredTarget("//foo:skylark_lib");
     @SuppressWarnings("unchecked")
-    SkylarkList<LibraryToLinkWrapper> libraries =
-        (SkylarkList<LibraryToLinkWrapper>) target.get("libraries");
+    SkylarkList<LibraryToLink> libraries = (SkylarkList<LibraryToLink>) target.get("libraries");
     assertThat(
             libraries.stream()
                 .map(x -> x.getResolvedSymlinkDynamicLibrary().getFilename())
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java
index 1a34a4a..2583655 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java
@@ -54,7 +54,7 @@
 import com.google.devtools.build.lib.rules.cpp.CppCompileAction;
 import com.google.devtools.build.lib.rules.cpp.CppModuleMap;
 import com.google.devtools.build.lib.rules.cpp.CppModuleMapAction;
-import com.google.devtools.build.lib.rules.cpp.LibraryToLinkWrapper;
+import com.google.devtools.build.lib.rules.cpp.LibraryToLink;
 import com.google.devtools.build.lib.rules.objc.ObjcProvider.Key;
 import com.google.devtools.build.lib.testutil.TestConstants;
 import com.google.devtools.build.lib.vfs.PathFragment;
@@ -1477,9 +1477,9 @@
     Iterable<Artifact> linkerInputArtifacts =
         Iterables.transform(
             objcProvider.get(CC_LIBRARY),
-            new Function<LibraryToLinkWrapper, Artifact>() {
+            new Function<LibraryToLink, Artifact>() {
               @Override
-              public Artifact apply(LibraryToLinkWrapper library) {
+              public Artifact apply(LibraryToLink library) {
                 return library.getStaticLibrary();
               }
             });