anchor.diff:          |> not)
       |> Set.union rest
   
  +
   type Resolved = {
       ResolvedPackages : Resolution
       ResolvedSourceFiles : ModuleResolver.ResolvedSourceFile list }
  +
  +let getResolverStrategy globalStrategyForTransitives (allRequirementsOfCurrentPackage:Set<PackageRequirement>) (currentRequirement:PackageRequirement) =
  +    if currentRequirement.Parent.IsRootRequirement() && Set.count allRequirementsOfCurrentPackage = 1 then
  +        ResolverStrategy.Max
  +    else
  +        let combined =
  +            (allRequirementsOfCurrentPackage
  +                |> List.ofSeq
  +                |> List.filter (fun x -> x.Depth > 0)
  +                |> List.sortBy (fun x -> x.Depth, x.ResolverStrategy <> globalStrategyForTransitives, x.ResolverStrategy <> Some ResolverStrategy.Max)
  +                |> List.map (fun x -> x.ResolverStrategy)
  +                |> List.fold (++) None)
  +                ++ globalStrategyForTransitives
  +                    
  +        defaultArg combined ResolverStrategy.Max
   
   type UpdateMode =
       | UpdateGroup of GroupName
  
positive.code:     | UpdateAll
  
  /// Resolves all direct and transitive dependencies
  let Resolve(groupName:GroupName, sources, getVersionsF, getPackageDetailsF, strategy, globalFrameworkRestrictions, (rootDependencies:PackageRequirement Set), updateMode : UpdateMode) =
      tracefn "Resolving packages for group %O:" groupName
      let lastConflictReported = ref DateTime.Now
  
  
negative.code:                 | OverrideAll v -> getSingleVersion v
                  | Specific v -> getSingleVersion v
                  | _ -> 
                      let resolverStrategy = getResolverStrategy globalStrategyForTransitives allRequirementsOfCurrentPackage currentRequirement
                      getVersionsF sources resolverStrategy groupName currentRequirement.Name
                  |> Seq.cache
  
              let preRelease v =
  