anchor.diff:      not v.IsMutable
   
   let ExprIsValue = function Expr.Val _ -> true | _ -> false
  +
   let ExpandStructuralBindingRaw cenv expr =
       match expr with
       | Expr.Let (TBind(v, rhs, tgtSeqPtOpt), body, m, _) 
  
positive.code:         assert ("unexpected reclink" = "")
          failwith "Unexpected reclink"
  
  //-------------------------------------------------------------------------
  // Optimize/analyze an object expression
  //------------------------------------------------------------------------- 
  
  and OptimizeObjectExpr cenv env (ty, baseValOpt, basecall, overrides, iimpls, m) =
      let basecall', basecallinfo = OptimizeExpr cenv env basecall
      let overrides', overrideinfos = OptimizeMethods cenv env baseValOpt overrides
      let iimpls', iimplsinfos = OptimizeInterfaceImpls cenv env baseValOpt iimpls
      let expr'=mkObjExpr(ty, baseValOpt, basecall', overrides', iimpls', m)
      expr', { TotalSize=closureTotalSize + basecallinfo.TotalSize + AddTotalSizes overrideinfos + AddTotalSizes iimplsinfos
               FunctionSize=1 (* a newobj *) 
               HasEffect=true
               MightMakeCriticalTailcall=false // creating an object is not a useful tailcall
               Info=UnknownValue}
  
  //-------------------------------------------------------------------------
  // Optimize/analyze the methods that make up an object expression
  //------------------------------------------------------------------------- 
  
  and OptimizeMethods cenv env baseValOpt methods = 
      OptimizeList (OptimizeMethod cenv env baseValOpt) methods
  
  
negative.code:         else
              GetInfoForNonLocalVal cenv env vref
  
      check vref res |> ignore
      res
  
  //-------------------------------------------------------------------------
  