anchor.diff:                      [| for v in parameterVars -> Quotations.Expr.Var v |]
                   match pcinfo.GetBaseConstructorCallInternal true with
                   | None ->  
  +                    ilg.Emit(OpCodes.Ldarg_0)
                       let cinfo = ptd.BaseType.GetConstructor(BindingFlags.Public ||| BindingFlags.NonPublic ||| BindingFlags.Instance, null, [| |], null)
                       ilg.Emit(OpCodes.Call,cinfo)
                   | Some f -> 
  +                    // argExprs should always include 'this'
                       let (cinfo,argExprs) = f (Array.toList parameters)
                       for argExpr in argExprs do 
                           emitExpr (ilg, locals, parameterVars) ExpectedStackState.Value argExpr
  
positive.code:             if otherTy.IsGenericType then
                  let otherGtd = otherTy.GetGenericTypeDefinition()
                  let otherArgs = otherTy.GetGenericArguments()
                  let yes = gtd.Equals(otherGtd) && Seq.forall2 (=) args otherArgs
                  yes
                  else
                      base.IsAssignableFrom(otherTy)
  
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
  