anchor.diff:      | V4_6_2
       | V4_6_3
       | V4_7
  -    | V5_0
  -    member private self.NumKey = 
  -        match self with
  -        | V1        -> 0
  -        | V1_1      -> 1
  -        | V2        -> 2
  -        | V3        -> 3
  -        | V3_5      -> 4
  -        | V4_Client -> 5
  -        | V4        -> 6
  -        | V4_5      -> 7
  -        | V4_5_1    -> 8
  -        | V4_5_2    -> 9
  -        | V4_5_3    -> 10
  -        | V4_6      -> 11
  -        | V4_6_1    -> 12
  -        | V4_6_2    -> 13
  -        | V4_6_3    -> 14
  -        | V4_7      -> 15
  -        | V5_0      -> 16
  -    static member private FromNum num = 
  -        match num with
  -        |  0  -> V1        
  -        |  1  -> V1_1      
  -        |  2  -> V2        
  -        |  3  -> V3        
  -        |  4  -> V3_5      
  -        |  5  -> V4_Client 
  -        |  6  -> V4        
  -        |  7  -> V4_5      
  -        |  8  -> V4_5_1    
  -        |  9  -> V4_5_2    
  -        |  10 -> V4_5_3    
  -        |  11 -> V4_6      
  -        |  12 -> V4_6_1    
  -        |  13 -> V4_6_2    
  -        |  14 -> V4_6_3    
  -        |  15 -> V4_7      
  -        |  16 -> V5_0
  -        | _   -> failwithf "'%i' has no corresponding framework version" num
  -
  -    static member (<->) (lower:FrameworkVersion,upper:FrameworkVersion) =
  -        if lower.NumKey < upper.NumKey then
  -            [ lower.NumKey .. upper.NumKey ] |> List.map FrameworkVersion.FromNum
  -        else
  -            [ lower.NumKey .. -1 .. upper.NumKey ] |> List.map FrameworkVersion.FromNum
  -
  +    | V5_0          
       override this.ToString() =
           match this with
           | V1        -> "v1.0"
  
positive.code:     | V1_5
      | V1_6
      | V2_0
      member private this.NumKey =
          match this with
          | V1_0 -> 0
          | V1_1 -> 1
          | V1_2 -> 2
          | V1_3 -> 3
          | V1_4 -> 4
          | V1_5 -> 5
          | V1_6 -> 6
          | V2_0 -> 7
      static member private FromNum num =
          match num with
          | 0 -> V1_0
          | 1 -> V1_1
          | 2 -> V1_2
          | 3 -> V1_3
          | 4 -> V1_4
          | 5 -> V1_5
          | 6 -> V1_6
          | 7 -> V2_0
          | _   -> failwithf "'%i' has no corresponding framework version" num
      
      static member (<->) (lower:DotNetStandardVersion,upper:DotNetStandardVersion) =
          if lower.NumKey < upper.NumKey then
              [ lower.NumKey .. upper.NumKey ] |> List.map DotNetStandardVersion.FromNum
          else
              [ lower.NumKey .. -1 .. upper.NumKey ] |> List.map DotNetStandardVersion.FromNum
  
      override this.ToString() =
          match this with
          | V1_0 -> "v1.0"
  
negative.code:         | _ -> false
      
      /// TODO: some notion of an increasing/decreasing sequence of FrameworkIdentitifers, so that Between(bottom, top) constraints can enumerate the list
  
      member x.IsCompatible y = 
          x = y || 
  