anchor.diff:              let i2 = s.IndexOf(".", i1 + 1)
               if i2 < 0 then s
               else s.Substring(i1 + 1, i2 - i1 - 1)
  -#endif
   
       let lowerFirst (s: string) =
           s.Substring(0,1).ToLowerInvariant() + s.Substring(1)
  
positive.code: 
      let GetFileNameWithoutExtension (path: string) =
          let filename = GetFileName path
          // Regex.Replace(filename, "\.\w+$", "")
          let i = filename.LastIndexOf(".")
          if i < 0 then filename
          else filename.Substring(0, i)
  
negative.code:         (path1.TrimEnd [|'\\';'/'|]) + "/" + (path2.Trim [|'\\';'/'|]) + "/" + (path3.TrimStart [|'\\';'/'|])
  
      let ChangeExtension (path: string, ext: string) =
          let i = path.LastIndexOf(".")
          if i < 0 then path
          else path.Substring(0, i) + ext
  
      let GetExtension (path: string) =
          let i = path.LastIndexOf(".")
          if i < 0 then ""
          else path.Substring(i)
  