anchor.diff:              dir.Attributes <- dir.Attributes &&& (~~~FileAttributes.ReadOnly)  
   
   /// Sets all files in the directory readonly 
  -let rec SetDirReadOnly readOnly (dir:DirectoryInfo) =
  -    dir.GetDirectories() |> Seq.iter (fun dir ->
  -        SetDirReadOnly readOnly dir
  -        setDirectoryReadOnly readOnly dir)
  -    dir.GetFiles() |> Seq.iter (fun file -> file.IsReadOnly <- readOnly)    
  +let SetDirReadOnly readOnly (dir:DirectoryInfo) =
  +    recursively (setDirectoryReadOnly readOnly) (fun file -> file.IsReadOnly <- readOnly) dir
     
   /// Sets all files in the directory readonly 
   let SetReadOnly readOnly (files: string seq) =
  
positive.code:     Directory.GetFiles(source, "*.*", SearchOption.AllDirectories)
        |> Seq.filter filterFile
        |> Seq.iter (fun file -> 
              let newFile = target + file.Remove(0, source.Length)
              logVerbosefn "%s => %s" file newFile
              Directory.CreateDirectory(Path.GetDirectoryName(newFile)) |> ignore
              File.Copy(file, newFile, true))
    
  /// Cleans a directory
  
negative.code:           fi.IsReadOnly <- readOnly
        else
            let di = new DirectoryInfo(file)
            setDirectoryReadOnly readOnly di)      
        
  /// Deletes a directory if it exists
  let DeleteDir x =   
  