anchor.diff:  
       member this.Delete path =
           let wp = wpath path
  -        // need to clear attributes since the Delete API refuses to delete read-only files
  -        let resetAttr p = File.SetAttributes(p, FileAttributes.Normal);
  -        if Directory.Exists wp then
  -            Directory.GetFiles(wp, "*", SearchOption.AllDirectories)
  -                |> Seq.iter (fun file -> resetAttr file)
  +        let dir = DirectoryInfo(wp)
  +        if dir.Exists then
  +            dir.EnumerateFiles("*", SearchOption.AllDirectories)
  +                |> Seq.iter this.PrepForOverwrite
               Directory.Delete(wp, true)
           else
  -            resetAttr wp
  +            this.PrepForOverwrite <| FileInfo wp
               File.Delete wp
   
       member this.OpenFile path =
  
positive.code:     member this.Copy currentPath newPath =
          let source = wpath currentPath
          let dest = wpath newPath
          if Directory.Exists source then
              let getDest sourcePath = Regex.Replace(sourcePath, "^" + (Regex.Escape source), dest)
              // copy folder structure
  
negative.code: 
      member this.Move currentPath newPath =
          let moveFile source dest =
              this.PrepForOverwrite <| FileInfo dest
              FileSystem.MoveFile(source, dest, true)
          let rec moveDir source dest =
              if Directory.Exists dest then
  