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: type ProvidedSymbolType(kind: SymbolKind, args: Type list) =
      inherit Type()
  
      let rec isEquivalentTo (thisTy: Type) (otherTy: Type) =
          match thisTy, otherTy with
          | (:? ProvidedSymbolType as thisTy), (:? ProvidedSymbolType as thatTy) -> (thisTy.Kind,thisTy.Args) = (thatTy.Kind, thatTy.Args)
          | (:? ProvidedSymbolType as thisTy), otherTy | otherTy, (:? ProvidedSymbolType as thisTy) ->
              match thisTy.Kind, thisTy.Args with
              | SymbolKind.SDArray, [ty] | SymbolKind.Array _, [ty] when otherTy.IsArray-> ty.Equals(otherTy.GetElementType())
              | SymbolKind.ByRef, [ty] when otherTy.IsByRef -> ty.Equals(otherTy.GetElementType())
              | SymbolKind.Pointer, [ty] when otherTy.IsPointer -> ty.Equals(otherTy.GetElementType())
              | SymbolKind.Generic baseTy, args -> otherTy.IsGenericType && isEquivalentTo baseTy (otherTy.GetGenericTypeDefinition()) && Seq.forall2 isEquivalentTo args (otherTy.GetGenericArguments())
              | _ -> false
          | a, b -> a.Equals b
  
  
      static member convType (parameters: Type list) (ty:Type) = 
          if ty.IsGenericType then 
              let args = Array.map (ProvidedSymbolType.convType parameters) (ty.GetGenericArguments())
  