docs: public static void replaceSymbolicLink(Path link, Path target) throws IOException {
          link = link.toAbsolutePath();
          if (Files.exists(link, NOFOLLOW_LINKS)) {
              if (!Files.isSymbolicLink(link)) {
                  throw new NotLinkException(String.format("%s is not a symbolic link", link));
              }
              // This operation will follow the link. And we want it to.
              Path parent = readCanonicalPath(link.getParent());
              Path temp   = parent.resolve(String.format("..tmp.%x", new Random().nextLong()));
              try {
                  Files.createSymbolicLink(temp, target);
                  Files.move(temp, link, ATOMIC_MOVE, REPLACE_EXISTING, NOFOLLOW_LINKS);
              } finally {
                  Files.deleteIfExists(temp);
              }
          } else {
              Files.createSymbolicLink(link, target);
          }
      }