anchor.diff:  let unitArg = ValReprInfo.unitArgData
   let unaryArg = [ ValReprInfo.unnamedTopArg ]
   let tupArg = [ [ ValReprInfo.unnamedTopArg1; ValReprInfo.unnamedTopArg1 ] ]
  -let mkValSpec g (tcref: TyconRef) tmty vis  slotsig methn ty argData = 
  +let mkValSpec g (tcref: TyconRef) tmty vis slotsig methn ty argData = 
       let m = tcref.Range 
       let tps = tcref.Typars m
  -    let final = isUnionTy g tmty || isRecdTy g tmty || isStructTy g tmty 
  -    let membInfo = match slotsig with None -> nonVirtualMethod tcref | Some slotsig -> slotImplMethod(final, tcref, slotsig) 
  +    let membInfo = 
  +        match slotsig with 
  +        | None -> nonVirtualMethod tcref 
  +        | Some slotsig -> 
  +            let final = isUnionTy g tmty || isRecdTy g tmty || isStructTy g tmty 
  +            slotImplMethod(final, tcref, slotsig)
       let inl = ValInline.Optional
       let args = ValReprInfo.unnamedTopArg :: argData
       let topValInfo = Some (ValReprInfo (ValReprInfo.InferTyparInfo tps, args, ValReprInfo.unnamedRetVal)) 
  
positive.code:     let tps = tcref.Typars m
      let vis = tcref.TypeReprAccessibility
  
      mkValSpec g tcref tmty vis  (Some(mkIComparableCompareToSlotSig g)) "CompareTo" (tps +-> (mkCompareObjTy g tmty)) unaryArg, 
      mkValSpec g tcref tmty vis  (Some(mkGenericIComparableCompareToSlotSig g tmty)) "CompareTo" (tps +-> (mkCompareTy g tmty)) unaryArg
      
  let MakeValsForCompareWithComparerAugmentation g (tcref: TyconRef) =
      let m = tcref.Range
  
negative.code:     let vis = tcref.TypeReprAccessibility
      let tps = tcref.Typars m
  
      let objEqualsVal = mkValSpec g tcref tmty vis (Some(mkEqualsSlotSig g)) "Equals" (tps +-> (mkEqualsObjTy g tmty)) unaryArg
      let nocEqualsVal = mkValSpec g tcref tmty vis (if tcref.Deref.IsExceptionDecl then None else Some(mkGenericIEquatableEqualsSlotSig g tmty)) "Equals" (tps +-> (mkEqualsTy g tmty)) unaryArg
      objEqualsVal, nocEqualsVal
      
  let MakeValsForEqualityWithComparerAugmentation g (tcref: TyconRef) =
      let _, tmty = mkMinimalTy g tcref
      let vis = tcref.TypeReprAccessibility
      let tps = tcref.Typars tcref.Range
      let objGetHashCodeVal = mkValSpec g tcref tmty vis (Some(mkGetHashCodeSlotSig g)) "GetHashCode" (tps +-> (mkHashTy g tmty)) unitArg
      let withcGetHashCodeVal = mkValSpec g tcref tmty vis (Some(mkIStructuralEquatableGetHashCodeSlotSig g)) "GetHashCode" (tps +-> (mkHashWithComparerTy g tmty)) unaryArg
      let withcEqualsVal  = mkValSpec g tcref tmty vis (Some(mkIStructuralEquatableEqualsSlotSig g)) "Equals" (tps +-> (mkEqualsWithComparerTy g tmty)) tupArg
      objGetHashCodeVal, withcGetHashCodeVal, withcEqualsVal
  