anchor.diff:          path
   
   module Program =
  -    let matchesPath path (s : string) =
  -        s.EndsWith(path)
  -          && not (s.Contains("\\\\"))
  -          && not (path.Contains("\\.\\"))
  -          && not (path.Contains("\\..\\"))
  +    let doubleSeparator = "##".Replace('#', System.IO.Path.DirectorySeparatorChar)
  +    let sameDirectory = "#.#".Replace('#', System.IO.Path.DirectorySeparatorChar)
  +    let parentDirectory = ".."
  +    let matchesPath (path : string) (s : string) =
  +        s.EndsWith(path.Replace('#', System.IO.Path.DirectorySeparatorChar))
  +          && not (s.Contains(doubleSeparator))
  +          && not (s.Contains(sameDirectory))
  +          && not (s.Contains(parentDirectory))
   
           
       [<EntryPoint>]
  
positive.code:         | x -> failwithf "Unexpected: %A" x
          
          match CallerInfoTest.AllInfo(21) with
          | (path, _, _) when matchesPath "Conformance\\SpecialAttributesAndTypes\\Imported\\CallerInfo\\CallerFilePath.fs" path -> ()
          | x -> failwithf "Unexpected C# result with multiple parameter types: %A" x
  
  # 345 "qwerty1"
          match CallerInfoTest.AllInfo(123) with
          | (path, _, _) when matchesPath "Conformance\\SpecialAttributesAndTypes\\Imported\\CallerInfo\\qwerty1" path -> ()
          | x -> failwithf "Unexpected C# result with multiple parameter types: %A" x
  
  # 456 "qwerty2"
          match CallerInfoTest.AllInfo(123) with
          | (path, _, _) when matchesPath "Conformance\\SpecialAttributesAndTypes\\Imported\\CallerInfo\\qwerty2" path -> ()
          | x -> failwithf "Unexpected C# result with multiple parameter types: %A" x
  
          0
negative.code:         let o1 = MyTy("42")
  
          match o.Path with
          | Some(path) when matchesPath "Conformance#SpecialAttributesAndTypes#Imported#CallerInfo#CallerFilePath.fs" path -> ()
          | x -> failwithf "Unexpected: %A" x
  
          match o1.Path with
  