anchor.diff:  
   type CompatibilityProfileName = string
   
  +/// A compatibility profile identifies which RIDs are compatible with what FrameworkIdentifier (TargetFrameworkMoniker/tfm in NuGet world)
   type CompatibilityProfile =
     { Name : CompatibilityProfileName
       Supported : Map<FrameworkIdentifier, Rid list> }
   
  +/// The description for a particular RID, indicates inherited (compatible) RIDs and runtime dependencies for this RID.
   type RuntimeDescription =
     { Rid : Rid
       InheritedRids : Rid list
       RuntimeDependencies : Map<PackageName, (PackageName * VersionRequirement) list> }
   
  +/// The runtime graph consolidating compatibility informations across the different RIDs
   type RuntimeGraph =
      { Supports : Map<CompatibilityProfileName, CompatibilityProfile>
        Runtimes : Map<Rid, RuntimeDescription> }
  
positive.code:             | _ -> failwithf "This should never happen")
          |> Map.ofSeq
  
  module RuntimeGraph =
      open PackageResolver
  
  
negative.code:          RuntimeDependencies =
              Map.merge (@) d1.RuntimeDependencies d2.RuntimeDependencies
              |> Map.map (fun _ l -> List.distinct l) }
      /// merge two runtime graphs
      let merge (r1:RuntimeGraph) (r2:RuntimeGraph) =
         { Supports = Map.merge mergeCompatibility r1.Supports r2.Supports
           Runtimes = Map.merge mergeDescription r1.Runtimes r2.Runtimes }
      /// merge a sequence of runtime graphs
      let mergeSeq s =
          s |> Seq.fold merge RuntimeGraph.Empty
      /// get the list of compatible RIDs for the given RID. Most compatible are near the head. The list contains the given RID in the HEAD
      let getInheritanceList (rid:Rid) (g:RuntimeGraph) =
          let rec getListRec currentList toInspect =
              match toInspect with
  