Remove DifferentRealPath.

It was added in unknown commit (2014 June) and since then became superfluous: the only place where ArtifactFileMetadata#value() is called with pathFragment and realPathFragment not being the same is the end ActionMetadataHandler#fileMetadataFromArtifact(), but control only ever gets there if a symlink is being processed.

RELNOTES: None.
PiperOrigin-RevId: 259938294
diff --git a/src/main/java/com/google/devtools/build/lib/actions/ArtifactFileMetadata.java b/src/main/java/com/google/devtools/build/lib/actions/ArtifactFileMetadata.java
index 73e5ef8..bc42962 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/ArtifactFileMetadata.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/ArtifactFileMetadata.java
@@ -126,21 +126,21 @@
       FileStateValue realFileStateValue) {
     Preconditions.checkState(pathFragment.isAbsolute(), pathFragment);
     Preconditions.checkState(realPathFragment.isAbsolute(), realPathFragment);
-    if (pathFragment.equals(realPathFragment)) {
-      Preconditions.checkState(
-          fileStateValue.getType() != FileStateType.SYMLINK,
-          "path: %s, fileStateValue: %s, realPath: %s, realFileStateValue: %s",
-          pathFragment,
-          fileStateValue,
-          realPathFragment,
-          realFileStateValue);
-      return new Regular(pathFragment, fileStateValue);
+    boolean pathsDiffer = !pathFragment.equals(realPathFragment);
+    boolean isSymlink = fileStateValue.getType() == FileStateType.SYMLINK;
+
+    Preconditions.checkState(
+        pathsDiffer == isSymlink,
+        "path: %s, fileStateValue: %s, realPath: %s, realFileStateValue: %s",
+        pathFragment,
+        fileStateValue,
+        realPathFragment,
+        realFileStateValue);
+
+    if (isSymlink) {
+      return new Symlink(realPathFragment, realFileStateValue, fileStateValue.getSymlinkTarget());
     } else {
-      if (fileStateValue.getType() == FileStateType.SYMLINK) {
-        return new Symlink(realPathFragment, realFileStateValue, fileStateValue.getSymlinkTarget());
-      } else {
-        return new DifferentRealPath(realPathFragment, realFileStateValue);
-      }
+      return new Regular(pathFragment, fileStateValue);
     }
   }
 
@@ -197,29 +197,17 @@
     }
   }
 
-  /**
-   * Base class for {@link ArtifactFileMetadata}s for files whose fully resolved path is different
-   * than the requested path. For example, this is the case for the path "foo/bar/baz" if at least
-   * one of 'foo', 'foo/bar', or 'foo/bar/baz' is a symlink.
-   */
-  private static class DifferentRealPath extends ArtifactFileMetadata {
-    protected final PathFragment realPath;
-    protected final FileStateValue realFileStateValue;
+  /** Implementation of {@link ArtifactFileMetadata} for files that are symlinks. */
+  private static final class Symlink extends ArtifactFileMetadata {
+    private final PathFragment linkTarget;
+    private final PathFragment realPath;
+    private final FileStateValue realFileStateValue;
 
-    DifferentRealPath(PathFragment realPath, FileStateValue realFileStateValue) {
-      this.realPath = Preconditions.checkNotNull(realPath);
-      this.realFileStateValue = Preconditions.checkNotNull(realFileStateValue);
-    }
-
-    @Override
-    public BigInteger getFingerprint() {
-      BigInteger original = super.getFingerprint();
-      BigIntegerFingerprint fp = new BigIntegerFingerprint();
-      fp.addBigIntegerOrdered(original);
-      fp.addString(getClass().getCanonicalName());
-      fp.addPath(realPath);
-      fp.addBigIntegerOrdered(realFileStateValue.getValueFingerprint());
-      return fp.getFingerprint();
+    private Symlink(
+        PathFragment realPath, FileStateValue realFileStateValue, PathFragment linkTarget) {
+      this.realPath = realPath;
+      this.realFileStateValue = realFileStateValue;
+      this.linkTarget = linkTarget;
     }
 
     @Override
@@ -227,40 +215,6 @@
       return realFileStateValue;
     }
 
-    @SuppressWarnings("EqualsGetClass") // Only subclass should never be equal to this class.
-    @Override
-    public boolean equals(Object obj) {
-      if (obj == null) {
-        return false;
-      }
-      if (obj.getClass() != DifferentRealPath.class) {
-        return false;
-      }
-      DifferentRealPath other = (DifferentRealPath) obj;
-      return realPath.equals(other.realPath) && realFileStateValue.equals(other.realFileStateValue);
-    }
-
-    @Override
-    public int hashCode() {
-      return Objects.hash(realPath, realFileStateValue);
-    }
-
-    @Override
-    public String toString() {
-      return realPath + ", " + realFileStateValue + " (symlink ancestor)";
-    }
-  }
-
-  /** Implementation of {@link ArtifactFileMetadata} for files that are symlinks. */
-  private static final class Symlink extends DifferentRealPath {
-    private final PathFragment linkTarget;
-
-    private Symlink(
-        PathFragment realPath, FileStateValue realFileStateValue, PathFragment linkTarget) {
-      super(realPath, realFileStateValue);
-      this.linkTarget = linkTarget;
-    }
-
     @Override
     public BigInteger getFingerprint() {
       BigInteger original = super.getFingerprint();