anchor.diff:          (lib.splitString "\n" (builtins.readFile file));
         removeComments = lib.filter (line: !(lib.hasPrefix "#" line));
         relativePaths = removeComments lines;
  -      absolutePaths = builtins.map (path: builtins.toPath (root + "/" + path)) relativePaths;
  +      absolutePaths =
  +        builtins.map (path: builtins.toPath (root + "/" + path)) relativePaths;
       in
         absolutePaths;
   
  
positive.code:       map f (stringToCharacters s)
      );
  
  
    # Escape occurrence of the elements of ‘list’ in ‘string’ by
    # prefixing it with a backslash. For example, ‘escape ["(" ")"]
    # "(foo)"’ returns the string ‘\(foo\)’.
    escape = list: replaceChars list (map (c: "\\${c}") list);
  
  
    # Escape all characters that have special meaning in the Bourne shell.
    escapeShellArg = lib.escape (stringToCharacters "\\ ';$`()|<>\t*[]");
  
  
    # Obsolete - use replaceStrings instead.
    replaceChars = builtins.replaceStrings or (
  
negative.code:       preLen = stringLength pre;
        sLen = stringLength s;
      in
      if hasPrefix pre s then
        substring preLen (sLen - preLen) s
      else
        s;
  
    removeSuffix = suf: s:
      let
        sufLen = stringLength suf;
        sLen = stringLength s;
      in
      if sufLen <= sLen && suf == substring (sLen - sufLen) sufLen s then
        substring 0 (sLen - sufLen) s
      else
        s;
  
    # Return true iff string v1 denotes a version older than v2.
    versionOlder = v1: v2: builtins.compareVersions v2 v1 == 1;
  
    # Return true iff string v1 denotes a version equal to or newer than v2.
    versionAtLeast = v1: v2: !versionOlder v1 v2;
  
    # This function takes an argument that's either a derivation or a
    # derivation's "name" attribute and extracts the version part from that
  