anchor.diff:                      lineNo, { current with Caches = caches; Sources = sources }::other
                   | ParserOptions options ->
                       lineNo,{ current with Options = parseOptions current options} ::other
  +
                   | Package(name,version,rest) ->
  -                    let package = parsePackage(current.Sources,DependenciesFile fileName,name,version,rest) 
  +                    let package = parsePackage(current.Sources,DependenciesFile fileName,name,version,false,rest) 
                       if checkDuplicates && current.Packages |> List.exists (fun p -> p.Name = package.Name) then
                           traceWarnfn "Package %O is defined more than once in group %O of %s" package.Name current.Name fileName
                       
  -                    lineNo, { current with Packages = current.Packages  @ [package] }::other
  +                    lineNo, { current with Packages = current.Packages @ [package] }::other
  +
  +                | CliTool(name,version,rest) ->
  +                    let package = parsePackage(current.Sources,DependenciesFile fileName,name,version,true,rest) 
  +                    if checkDuplicates && current.Packages |> List.exists (fun p -> p.Name = package.Name) then
  +                        traceWarnfn "Package %O is defined more than once in group %O of %s" package.Name current.Name fileName
  +                    
  +                    lineNo, { current with Packages = current.Packages @ [package] }::other
  +
                   | SourceFile(origin, (owner,project, vr), path, authKey) ->
                       let remoteFile : UnresolvedSource = { 
                           Owner = owner
  
positive.code:             | [name] -> Some (Package(name,">= 0",""))
              | _ -> failwithf "could not retrieve NuGet package from %s" trimmed
          | _ -> None
      
      let private (|Empty|_|) (line:string) =
          match line.Trim()  with
  
negative.code:         match line.Trim()  with
          | String.RemovePrefix "group" _ as trimmed -> Some (Group (trimmed.Replace("group ","")))
          | _ -> None
  
      let parsePackage (sources,parent,name,version,isCliTool,rest:string) =
          let prereleases,optionsText =
              if rest.Contains ":" then
                  // boah that's reaaaally ugly, but keeps backwards compat
  