diff --git a/src/main/java/com/google/devtools/build/lib/cmdline/Label.java b/src/main/java/com/google/devtools/build/lib/cmdline/Label.java
index b81efab..3f11858 100644
--- a/src/main/java/com/google/devtools/build/lib/cmdline/Label.java
+++ b/src/main/java/com/google/devtools/build/lib/cmdline/Label.java
@@ -130,6 +130,7 @@
       boolean defaultToMain,
       ImmutableMap<RepositoryName, RepositoryName> repositoryMapping)
       throws LabelSyntaxException {
+    Preconditions.checkNotNull(repositoryMapping);
     String repo = defaultToMain ? "@" : RepositoryName.DEFAULT_REPOSITORY;
     int packageStartPos = absName.indexOf("//");
     if (packageStartPos > 0) {
@@ -158,6 +159,7 @@
   private static RepositoryName getGlobalRepoName(
       String repo, ImmutableMap<RepositoryName, RepositoryName> repositoryMapping)
       throws LabelSyntaxException {
+    Preconditions.checkNotNull(repositoryMapping);
     RepositoryName repoName = RepositoryName.create(repo);
     return repositoryMapping.getOrDefault(repoName, repoName);
   }
@@ -524,6 +526,7 @@
   public Label getRelativeWithRemapping(
       String relName, ImmutableMap<RepositoryName, RepositoryName> repositoryMapping)
       throws LabelSyntaxException {
+    Preconditions.checkNotNull(repositoryMapping);
     if (relName.length() == 0) {
       throw new LabelSyntaxException("empty package-relative label");
     }
diff --git a/src/main/java/com/google/devtools/build/lib/packages/Package.java b/src/main/java/com/google/devtools/build/lib/packages/Package.java
index cb7c427..82b2aca 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/Package.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/Package.java
@@ -402,7 +402,7 @@
     this.posts = ImmutableList.copyOf(builder.posts);
     this.registeredExecutionPlatforms = ImmutableList.copyOf(builder.registeredExecutionPlatforms);
     this.registeredToolchains = ImmutableList.copyOf(builder.registeredToolchains);
-    this.repositoryMapping = builder.repositoryMapping;
+    this.repositoryMapping = Preconditions.checkNotNull(builder.repositoryMapping);
     ImmutableMap.Builder<RepositoryName, ImmutableMap<RepositoryName, RepositoryName>>
         repositoryMappingsBuilder = ImmutableMap.builder();
     if (!builder.externalPackageRepositoryMappings.isEmpty() && !builder.isWorkspace()) {
@@ -929,7 +929,7 @@
      * package)
      */
     Builder setRepositoryMapping(ImmutableMap<RepositoryName, RepositoryName> repositoryMapping) {
-      this.repositoryMapping = repositoryMapping;
+      this.repositoryMapping = Preconditions.checkNotNull(repositoryMapping);
       return this;
     }
 
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/RepositoryMappingValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/RepositoryMappingValue.java
index 809a86d..6720559 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/RepositoryMappingValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/RepositoryMappingValue.java
@@ -52,6 +52,7 @@
   private final ImmutableMap<RepositoryName, RepositoryName> repositoryMapping;
 
   private RepositoryMappingValue(ImmutableMap<RepositoryName, RepositoryName> repositoryMapping) {
+    Preconditions.checkNotNull(repositoryMapping);
     this.repositoryMapping = repositoryMapping;
   }
 
