anchor.diff:  
   open Paket.Domain
   open Paket.Logging
  +
  +open Chessie.ErrorHandling
   
   type AdjGraph<'a> = list<'a * list<'a>>
   
  
positive.code: // e.g. Microsoft.AspNet.Mvc - not specified in paket.dependencies, a dependency of other package(s)
  | Transient of DependencyChain list
  
  [<CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
  module Reason =
      let format = function
      | TopLevel -> 
          sprintf "direct (%s) and top-level dependency" 
                  Constants.DependenciesFileName
      | Direct chains -> 
          sprintf "direct (%s) dependency. It's a part of following build chains: %s"
                  Constants.DependenciesFileName
                  (DependencyChain.formatMany chains)
      | Transient chains -> 
          sprintf "transient dependency. It's a part of following dependency chains: %s"
                  (DependencyChain.formatMany chains)
  
      let infer (name : PackageName, 
                 groupName : GroupName,
                 directDeps : Set<PackageName>, 
                 lockFile : LockFile) =
          if Set.contains name directDeps then 
              TopLevel
          else
              TopLevel
  
  let prettyFormatPath (path: WhyPath) = 
      path 
      |> List.mapi
          (fun i (name, isDirect) -> 
              sprintf "%s-> %O%s"
                      (String.replicate i "  ")
                      name
                      (if isDirect then sprintf " (%s)" Constants.DependenciesFileName else ""))
      |> String.concat Environment.NewLine
  
  let prettyPrintPath (path: WhyPath) =
      path
      |> prettyFormatPath
      |> tracen
      tracen ""
  
  let ohWhy (packageName, 
             directDeps : Set<PackageName>, 
  
negative.code: type WhyOptions = 
      { AllPaths : bool }
  
  type DependencyChain = List<PackageName>
  
  [<CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
  module DependencyChain =
  