anchor.diff:      FSRecdFieldSln(rfinfo.TypeInst,rfinfo.RecdFieldRef,isSet)
   
   /// Write into the reference cell stored in the TAST and add to the undo trace if necessary
  -and TransactMemberConstraintSolution traitInfo trace sln  =
  +and TransactMemberConstraintSolution traitInfo (trace:OptionalTrace) sln  =
       let prev = traitInfo.Solution 
  -    traitInfo.Solution <- Some sln
  -    match trace with 
  -    | NoTrace -> () 
  -    | WithTrace trace -> trace.Push (fun () -> traitInfo.Solution <- prev) 
  +    trace.Exec (fun () -> traitInfo.Solution <- Some sln) (fun () -> traitInfo.Solution <- prev)
   
   /// Only consider overload resolution if canonicalizing or all the types are now nominal. 
   /// That is, don't perform resolution if more nominal information may influence the set of available overloads 
  
positive.code:                                  (TypesMustSubsumeOrConvertInsideUndo csenv ndeep trace cxsln m)// REVIEW: this should not be an "InsideUndo" operation
                                   (ArgsMustSubsumeOrConvert csenv ndeep trace cxsln cx.IsSome) 
                                   reqdRetTyOpt 
                                   calledMeth)
  
      | None -> 
          None, errors        
  
negative.code:         // Record a entry in the undo trace if one is provided 
          let d = tp.Data
          let orig = d.typar_constraints
          trace.Exec (fun () -> d.typar_constraints <- newConstraints) (fun () -> d.typar_constraints <- orig)
  
          CompleteD)))
  
  