anchor.diff:          | Some x -> x.References
           | None -> Set.empty
   
  +    static member singleton(framework,libs) =
  +        { Frameworks = Map.add framework libs Map.empty; Fallbacks = InstallFiles.empty }
  +
  +    member this.ReplaceFramework(framework,f1,f2) =
  +        { this with Frameworks = 
  +                        match Map.tryFind framework this.Frameworks with
  +                        | Some files -> Map.add framework (f1 files) this.Frameworks
  +                        | None -> 
  +                            match f2() with
  +                            | Some files -> Map.add framework files this.Frameworks
  +                            | None -> this.Frameworks }
  +
   type InstallModel = 
       { PackageName : string
         PackageVersion : SemVerInfo
  
positive.code:                 match reference with
                  | Reference.Library lib -> not (lib.EndsWith ".dll" || lib.EndsWith ".exe")
                  | _ -> false ]
          { this with Groups = 
                          this.Groups 
                          |> Map.map 
  
negative.code:         this.AddOrReplaceGroup(
              framework.Group,
              (fun group ->
                  group.ReplaceFramework(
                      framework,
                      (fun files -> files.AddFrameworkAssemblyReference assemblyName),
                      (fun _ -> Some (InstallFiles.empty.AddFrameworkAssemblyReference assemblyName)))),
              (fun _ -> None))
      
      member this.AddFrameworkAssemblyReferences(references) : InstallModel = 
          references 
          |> Seq.fold 
                 (fun model reference -> model.AddFrameworkAssemblyReference(reference.TargetFramework, reference.AssemblyName))
                  this
      
      member this.FilterBlackList() = 
          let blackList = 
  