Description redacted.
--
MOS_MIGRATED_REVID=101221537
diff --git a/src/main/java/com/google/devtools/build/lib/vfs/PathFragment.java b/src/main/java/com/google/devtools/build/lib/vfs/PathFragment.java
index e8fdf36..de7a958 100644
--- a/src/main/java/com/google/devtools/build/lib/vfs/PathFragment.java
+++ b/src/main/java/com/google/devtools/build/lib/vfs/PathFragment.java
@@ -81,6 +81,15 @@
         }
       };
 
+  /** Lower-level API. Create a PathFragment, interning segments. */
+  public static PathFragment create(char driveLetter, boolean isAbsolute, String[] segments) {
+    String[] internedSegments = new String[segments.length];
+    for (int i = 0; i < segments.length; i++) {
+      internedSegments[i] = StringCanonicalizer.intern(segments[i]);
+    }
+    return new PathFragment(driveLetter, isAbsolute, segments);
+  }
+
   // We have 3 word-sized fields (segments, hashCode and path), and 2
   // byte-sized ones, which fits in 16 bytes. Object sizes are rounded
   // to 16 bytes.  Medium sized builds can easily hold millions of
@@ -578,6 +587,11 @@
     return (driveLetter != '\0') ? driveLetter + ":" : "";
   }
 
+  /** Return the drive letter or '\0' if not applicable. */
+  public char getDriveLetter() {
+    return driveLetter;
+  }
+
   /**
    * Returns the number of segments in this path.
    */