anchor.diff:  
   [<Experimental("Эксперементальные функции модуля Scripting")>]
   module Scripting =
  -  open System
  -  open System.IO
     open DmitriyVlasov
     open DmitriyVlasov.Collections
     open DmitriyVlasov.Scripting
   
  +  open System
  +  open System.IO
  +
     /// Посчитать количество файлов в каталоге в разрезе в разрезе раширений.
     /// Если количество файлов меньше порогового показать пути к файлам.
     let filterGroupCountShowFiles rareFiles searchPattern dirPath = 
  -    let count = Seq.sumBy (fun _ -> 1)
       let showFiles = 
         Seq.map (String.replace dirPath "..")
         >> Seq.map (sprintf "\n\"%s\"")
         >> String.concat ""
       let rare files = 
  -      if count files <= rareFiles
  +      if Seq.length files <= rareFiles
         then showFiles files
         else ""
       find SearchOption.AllDirectories searchPattern dirPath
       |> Seq.groupBy extension
  -    |> Seq.map (fun (ext, files) -> ext, count files, files)
  -    |> Seq.sortBy (fun (_, count, _) -> count)
  -    |> Seq.iter (fun (ext, count, files) -> 
  +    |> Seq.map (fun (ext, files) -> (ext, Seq.length files), files)
  +    |> Seq.sortBy (fst >> snd)
  +    |> Seq.iter (fun ((ext, count), files) -> 
         printfn "%10s; %3d;%s" ext count (rare files))
   
     /// Статистика слов в файлах.
     let wordStatistics codepage delimiters searchPattern dirPath =
       find SearchOption.AllDirectories searchPattern dirPath
  -    |> Seq.map (fun filePath -> 
  -      filePath
  -      |> readText codepage
  -      |> String.splitMany delimiters)
  +    |> Seq.map (readText codepage >> String.splitMany delimiters)
       |> Seq.concat
       |> Seq.countBy id
       |> Seq.sortBy ( fun (_, number) -> - number )
  
positive.code:       groupFiles
        |> List.iter (fun filePath -> mv filePath <| newDirPath ++ filename filePath) )
  
    /// Файл является изображением.
    let isImageFile filePath = 
      match extension filePath with
      | ".JPG" |".jpg" -> true
      | _ -> false
  
    /// Время создания пары файлов меньше заданного времени минут.
    let timeSpanLess minutes file1 file2 = 
      let creationTime filePath = FileInfo(filePath).CreationTime
      creationTime file2 - creationTime file1 <= TimeSpan.FromMinutes(minutes)
  
  
negative.code:     let condition (line:string) = 
        line.IndexOf(value = searchString, comparisonType = System.StringComparison.OrdinalIgnoreCase) >= 0
      let foundLinesOfFile = lines codepage >> Seq.filter condition
      // TODO: Показывать контекст поиска: +-1 строка выше и ниже найденного вхождения.
      filePaths
      |> Seq.map (fun path -> path, foundLinesOfFile path )
      |> Seq.filter (fun (_, foundLines) -> foundLines |> Seq.length > 0)
  