anchor.diff:      | Directory(name) :: t -> 
           let subDirs = 
               acc
  -            |> List.map (checkSubDirs name) 
  +            |> List.map (checkSubDirs false name) 
  +            |> List.concat
  +        buildPaths subDirs t
  +    | Drive(name) :: t ->
  +        let subDirs = 
  +            acc
  +            |> List.map (checkSubDirs true name)
               |> List.concat
           buildPaths subDirs t
       | Recursive :: [] ->
  
positive.code: 
  type private SearchOption = 
  | Directory of string
  | Recursive
  | FilePattern of string
          
  let private checkSubDirs (dir:string) root =
      if dir.Contains "*" then
          Directory.EnumerateDirectories(root, dir, SearchOption.TopDirectoryOnly) |> Seq.toList
      else
          let di = new DirectoryInfo(Path.Combine(root, dir))
          if di.Exists then [di.FullName] else []        
          
  let rec private buildPaths acc (input : SearchOption list) =
      match input with
  
negative.code:     |> Seq.map (function
                  | "**" -> Recursive
                  | a when a = filePattern -> FilePattern(a)
                  | a when isDrive a -> Drive (a + directorySeparator)
                  | a -> Directory(a))
      |> Seq.toList
      |> buildPaths [baseDir]
  