anchor.diff:              if otherTy.IsGenericType then
                   let otherGtd = otherTy.GetGenericTypeDefinition()
                   let otherArgs = otherTy.GetGenericArguments()
  -                let yes = gtd.Equals(otherGtd) && Seq.forall2 (=) args otherArgs
  +                let yes = gtd.Equals(otherGtd) && Seq.forall2 isEquivalentTo args otherArgs
                   yes
                   else
                       base.IsAssignableFrom(otherTy)
  
positive.code: type ProvidedSymbolType(kind: SymbolKind, args: Type list) =
      inherit Type()
  
      static member convType (parameters: Type list) (ty:Type) = 
          if ty.IsGenericType then 
              let args = Array.map (ProvidedSymbolType.convType parameters) (ty.GetGenericArguments())
  
negative.code:         | SymbolKind.Generic gty,_ -> 9797 + hash gty + List.sumBy hash args
          | SymbolKind.FSharpTypeAbbreviation _,_ -> 3092
          | _ -> failwith "unreachable"
      
      override this.Equals(other: obj) =
          match other with
          | :? ProvidedSymbolType as otherTy -> (kind, args) = (otherTy.Kind, otherTy.Args)
          | _ -> false
  
      member this.Kind = kind
      member this.Args = args
      
      override this.GetConstructors _bindingAttr                                                      = notRequired "GetConstructors" this.Name
      override this.GetMethodImpl(_name, _bindingAttr, _binderBinder, _callConvention, _types, _modifiers) = 
          match kind with
  